by jacoby » 2012年2月05日(日) 07:28
ダイアログのクライアント領域の色を変更したいのですが
どうもWM_CTLCOLORDLGメッセージが捕まえられません。
メインのウインドウにボタンが一つあって、
そのボタンを押すとダイアログボックス(モーダル)が
立ち上がるような簡単なプロジェクトを書いてみてテストしてみました。
以下プロジェクト・コード全文です。(ウインドウは「MainWnd」と「ModalWnd」のみ)
ソース・MainWnd.sbp [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
#prompt 'プロンプトウインドウの表示
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
TEST_DestroyObjects()
PostQuitMessage(0)
End Sub
'ボタンクリックでダイアログを表示
Sub MainWnd_CommandButton1_Click()
DialogBox(hMainWnd, "ModalWnd")
End Sub
ソース・ModalWnd.sbp [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [ModalWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hModalWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function ModalWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Select Case dwMsg
Case WM_CTLCOLORDLG
Print "WM_CTLCOLORDLG"
Case WM_CTLCOLORSTATIC
Print "WM_CTLCOLORSTATIC"
End Select
' イベントプロシージャの呼び出しを行います。
ModalWndProc=EventCall_ModalWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
試しにモーダルダイアログ上にスタティックテキストを一枚貼り付け、同様のメッセージである
"WM_CTLCOLORSTATIC"が飛んでくるかテストしてみたのですが、これについては取得出来ました。
ところがWM_CTLCOLORDLGについてはそもそも飛んで来てないのか「Print "WM_CTLCOLORDLG"」が実行されないようです。
WM_CTLCOLORDLGはABのフォルダ内\Include\api-msg.sbpにて定義されています。
使えるハズだとも思うのですが。
お知りの方がおられましたら教えてください。
(AB ver4.24 /WinMe)
ダイアログのクライアント領域の色を変更したいのですが
どうもWM_CTLCOLORDLGメッセージが捕まえられません。
メインのウインドウにボタンが一つあって、
そのボタンを押すとダイアログボックス(モーダル)が
立ち上がるような簡単なプロジェクトを書いてみてテストしてみました。
以下プロジェクト・コード全文です。(ウインドウは「MainWnd」と「ModalWnd」のみ)
[hide=ソース・MainWnd.sbp]
[code]
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
#prompt 'プロンプトウインドウの表示
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
TEST_DestroyObjects()
PostQuitMessage(0)
End Sub
'ボタンクリックでダイアログを表示
Sub MainWnd_CommandButton1_Click()
DialogBox(hMainWnd, "ModalWnd")
End Sub
[/code]
[/hide]
[hide=ソース・ModalWnd.sbp]
[code]
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [ModalWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hModalWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function ModalWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Select Case dwMsg
Case WM_CTLCOLORDLG
Print "WM_CTLCOLORDLG"
Case WM_CTLCOLORSTATIC
Print "WM_CTLCOLORSTATIC"
End Select
' イベントプロシージャの呼び出しを行います。
ModalWndProc=EventCall_ModalWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
[/code]
[/hide]
試しにモーダルダイアログ上にスタティックテキストを一枚貼り付け、同様のメッセージである
"WM_CTLCOLORSTATIC"が飛んでくるかテストしてみたのですが、これについては取得出来ました。
ところがWM_CTLCOLORDLGについてはそもそも飛んで来てないのか「Print "WM_CTLCOLORDLG"」が実行されないようです。
WM_CTLCOLORDLGはABのフォルダ内\Include\api-msg.sbpにて定義されています。
使えるハズだとも思うのですが。
お知りの方がおられましたら教えてください。
(AB ver4.24 /WinMe)