私はそれにチェックボックスを持っているネイティブwin32 C++アプリケーションを持っています。チェックボックスを置き換え、2つの状態(チェックボックスのように)でON/OFFトグルボタンを作成したいと思います。チェックボックスにBS_OWNERDRAW
のスタイルを追加して、WM_DRAWITEM
のウィンドウに描画しました。問題は、チェックボックスをクリックすると、BS_OWNERDRAW
のように、WM_COMMAND
というメッセージが表示されますが、CHECKED状態は自動的に変更されません。この機能を実装する必要がありますか、何か不足していますか?ownerdrawnチェックボックス
チェックボックスをクリックハンドルコード:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDC_CHECKBOX:
if(wmEvent == BN_CLICKED)
{
dwPos = SendMessage(checkBox, BM_GETCHECK, 0, 0);
if(dwPos == BST_CHECKED)
{
// do some stuff
} else if(dwPos == BST_UNCHECKED) {
// do some stuff
}
}
問題は毎回私がBM_GETCHECKがBST_UNCHECKEDを返すのチェックボックスをクリックしてくださいということです。私はBS_OWNERDRAWを削除する場合、それは正常に動作します。ボタン/チェックボックスを作成します
コード:
checkBox = CreateWindowEx(
0,
WC_BUTTON,
szBuffer,
WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX | BS_OWNERDRAW,
BUTTON_ON_OFF_X, BUTTON_ON_OFF_Y,
BUTTON_ON_OFF_WIDTH, BUTTON_ON_OFF_HEIGHT,
hWnd,
(HMENU)IDC_CHECKBOX,
hInst,
NULL
);
残念ながら私はしませんでした。チェックボックス – blejzz