EmptyPage.jp > Whining Express > 2003-08-03
サイトの更新情報や日々の雑感など。
ダイアログでプロパティシートを作成して、そこに複数行表示のエディットコントロールを配置しようとするとうまくいきません。結局VCの掲示板に投げてしまいました。
エディットコントロールにフォーカスがある状態でESCキー押すとプロパティページ全体が真っ白に破棄されるし、そもそもダイアログの初期化じたいもうまくいってないような感じ。以下のようなコードで確認できます。
#include <windows.h> void main(TX *text) { HDIALOG hdBase = dialog("Test"); HDIALOG hd = dialog("Page"); DTRECT r; dialogGetPos(hd, &r); r.cx = 40 * DTCX; r.cy = 8 * DTCY; __dialogAddItem(hd, "Edit", "Hello, world.", 100, &r, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_MULTILINE | ES_AUTOVSCROLL); dialogAddPage(hdBase, hd); dialogOpen(hdBase); }
「ES_MULTILINE」と適当なキーワードを混ぜてググってみたところ、唯一関係あるとおぼしきことを書いてるのがCodeGuruというサイトでのリストビュー(笑)の使い方の解説記事。
(記事のタイトル付けが変なような気もしますがそれはおいとくとして、)掲載されているサンプルコードに "Strange but true:"
という前振りで "If the edit control has ES_MULTILINE and ESC is pressed the parent is destroyed if the message is dispatched."
などというコメントが書かれています。もっともこれはリストビューのアイテムの編集についてのVC++によるコーディングを説明している記事なので、あんまり関係ないような気もしますが、ほかに近いことを言っているページが見つからなかったのでいちおうメモ。
さて、TX-CにはdialogEditWzというAPIがあるのになんでエディットコントロールなのかと訝しむ人もいるかもしれませんが、じつは(ES_READONLYと併用して)内容をコピーできる読み取り専用のテキストを付けようとしていたのでした。だめならあきらめてStaticコントロールにすると。
しかし、なんかこのままわかんないのも癪だなあ。