ab.com コミュニティ

ActiveBasicを通したコミュニケーション
前回の訪問日時: 2019年12月10日(火) 03:53 現在時刻 - 2019年12月10日(火) 03:53

All times are UTC+09:00




 [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2012年2月05日(日) 07:28 
オフライン

登録日時: 2006年6月02日(金) 18:20
記事: 106
ダイアログのクライアント領域の色を変更したいのですが
どうもWM_CTLCOLORDLGメッセージが捕まえられません。

メインのウインドウにボタンが一つあって、
そのボタンを押すとダイアログボックス(モーダル)が
立ち上がるような簡単なプロジェクトを書いてみてテストしてみました。

以下プロジェクト・コード全文です。(ウインドウは「MainWnd」と「ModalWnd」のみ)  試しにモーダルダイアログ上にスタティックテキストを一枚貼り付け、同様のメッセージである
"WM_CTLCOLORSTATIC"が飛んでくるかテストしてみたのですが、これについては取得出来ました。
ところがWM_CTLCOLORDLGについてはそもそも飛んで来てないのか「Print "WM_CTLCOLORDLG"」が実行されないようです。

 WM_CTLCOLORDLGはABのフォルダ内\Include\api-msg.sbpにて定義されています。
使えるハズだとも思うのですが。

 お知りの方がおられましたら教えてください。
(AB ver4.24 /WinMe)


ページトップ
   
 
投稿記事Posted: 2012年2月06日(月) 19:24 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 203
お住まい: 東京都
WM_CTLCOLORDLGメッセージではなくWM_INITDIALOGメッセージでキャッチするかもしくはCREATEイベント内でダイアログの色の変更機能を実装してみてください。

ABのIDEのRADでコーディングした場合はダイアログボックス(この場合:モーダル)作成はCallback.wbpを見ればわかりますが、WM_INITDIALOGメッセージをキャッチした時に行われます。なのでおそらくWM_CTLCOLORDLGイベントは発生しないと思います。
ご確認よろしくお願いします。


ページトップ
   
 
投稿記事Posted: 2012年2月08日(水) 00:08 
オフライン

登録日時: 2006年6月02日(金) 18:20
記事: 106
引用:
ABのIDEのRADでコーディングした場合はダイアログボックス(この場合:モーダル)作成はCallback.wbpを見ればわかりますが、WM_INITDIALOGメッセージをキャッチした時に行われます。なのでおそらくWM_CTLCOLORDLGイベントは発生しないと思います。
そうなんですか。WM_CTLCOLORDLGが発生しないなら、いくら待っていても駄目ですね。
ただダイアログの色の変更処理はWM_CTLCOLORDLGイベントの「戻り値」に設定する色のブラシハンドルをセットするというような仕様になっていたと思うので、これをINITDIALOGイベントでどのように実装出来るのかはまだ自分では確認出来ていません。
http://www.serpress.co.jp/cpp/no013.html
いずれにしてもこの方法そのまま、というのは少し難しそうな感じがしますね。(PAINTイベントで自力で描画するというのも手かも知れませんが。)

たかせさん、返信有難うございました。また何かありましたらよろしくお願いします。


ページトップ
   
 
 [ 3 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: AhrefsBot, Bing [Bot], CCBot, Google [Bot] & ゲスト[1人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean