こんにちは、
ResEdit を使用してモードレス ダイアログを作成し、Windows のデフォルトの「ペイント」アプリケーションにあるウィンドウの色選択ダイアログの機能を正確に模倣しました。
これは、C++ WINAPI の研究の一環として行っています。
(こちらをご覧ください: http://i233.photobucket.com/albums/ee74/Lightfooted/Public/colorDialog.jpg )
私が現在困惑している問題は、「WM_CTLCOLORSTATIC」の処理中に「PictureBox」コントロールの背景に色を付けられないように見えることです。理由はわかりませんが、WM_CTLCOLORSTATIC を処理しようとすると、「アクセスが拒否されました」というシステム エラー メッセージが表示されます。
私のコードは次のようになります。
DWORD dwLastError;
TCHAR lpBuffer[256];
switch(msg)
{
[...]
case WM_CTLCOLORSTATIC:
if(dwLastError != 0) // Don't want to see a "operation done successfully" error ;-)
::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, // It´s a system error
NULL, // No string to be formatted needed
dwLastError, // Hey Windows: Please explain this error!
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), // Do it in the standard language
lpBuffer, // Put the message here
lpBuffer -1, // Number of bytes to store the message
NULL);
[...]
}
「WM_CTLCOLORSTATIC の場合」も何もなく、応答で「アクセスが拒否されました」というシステム エラーが表示されます。
何が原因なのかわかりません。