ページ 1 / 1
読み取り専用の解除
Posted: 2006年7月16日(日) 20:36
by C1000
エディットコントロールの読み取り専用のスタイルをプログラムの中から解除したいのですがどのようにすれば出来るでしょうか?
Re: 読み取り専用の解除
Posted: 2006年7月16日(日) 22:52
by NoWest
> エディットコントロールの読み取り専用のスタイルをプログラムの中から解除したいのですがどのようにすれば出来るでしょうか?
ウィンドウスタイルを変更したい場合はSetWindowLong関数にGWL_STYLEを指定して新しいスタイルを入れてやれば変更できます。
しかしながら、ウィンドウスタイルを途中で変える場合Windowsのシステムがこちらが意図していない値を追加している場合があるので、新しいスタイルを追加する場合は変更前のウィンドウスタイルにORで新しいスタイルを追加し、スタイルを削除する場合は変更前のスタイルに除きたいスタイルをNAND(Not And)しなければいけません。
例えば最大化ボタンをウィンドウスタイルから除きたい場合、以下のようにします。
コード: 全て選択
Dim Style As DWord
Style=GetWindowLong(hMainWnd,GWL_STYLE)
SetWindowLong(hMainWnd,GWL_STYLE,Style And (Not(WS_MAXIMIZEBOX)))
あとは「エディットボックスの読み取り専用」ですが、ヘルプを見るとES_READONLYと載っていますのでこれをスタイルから除けばよいでしょう。
余談ですが、単純にエディットボックスに入力をさせたくない場合、EnableWindowが使えます。ヘルプで調べてみてください。
Posted: 2006年7月17日(月) 09:23
by C1000
このように追加しましたが解除されません。
コード: 全て選択
Dim Style As DWord
Style=GetWindowLong(hEdit,GWL_STYLE)
SetWindowLong(hEdit,GWL_STYLE,Style And (Not(ES_READONLY)))
Re: 読み取り専用の解除
Posted: 2006年7月17日(月) 17:08
by KICO
何時も、お世話に成っています。
同じ内容の質問が
http://forums.belution.com/ja/vc/000/134/12s.shtml に在りました。
読み取り専用の設定・解除は、SendMessage関数で行うようです。
SendMessage(hWnd, EM_SETREADONLY, mode, 0) 'mode: TRUE= 設定, FALSE= 解除
"EM_SETREADONLY"だけが例外で、SetWindowLong関数では変更出来ないのでしょうか、
まだ他にも幾つか有るのでしょうか?
宜しくお願いします。
Posted: 2006年7月17日(月) 17:20
by C1000
出来ました。KICOさん、NoWestさんありがとうございました。