グループ化されたチェック ボックスを使用してプログラムに取り組んでいますが、メッセージがさまざまなハンドルを介してどのように伝達されるかについて混乱しています。
IDE:VC++、Win32 API
まず、 hWndなどのハンドルを持つメイン ウィンドウがあります。
また、WM_CREATE の場合の WndProc 関数では、「グループ ボタン」と個別の 2 つのチェック ボックスを作成します。
注: 最初のボタンは「BS_GROUPBOX」スタイルを使用し、ハンドルhGrpButtonを使用して作成され、親ハンドラーはhWndです。2 番目と 3 番目のボタンは「BS_AUTORADIOBUTTON」スタイルで、その親ハンドルはhGrpButtonです。
2 つのボタンがグループ化されていない場合 (つまり、それらの親ハンドラーは hWnd になります)、それらのステータスを簡単に確認できます。ケース WM_COMMAND に移動し、その ID を使用して IsDlgButtonChecked 関数で確認するだけです。2 つのチェック ボックスがグループ化された後 (それらの親ハンドルは hWnd ではなく hGrpButtons になります)、WM_COMMAND は hWnd の下で ID を探しているため、それらの ID が見つからないと思います。
つまり、2 つのチェック ボックスがグループ化された後、それらを監視するイベントが何であるかがわかりません。
case WM_CREATE:
{
/*Group for Radio button for preview/single or batch operation */
hGrpButtons=CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"Select Process Mode:",
WS_VISIBLE | WS_CHILD|BS_GROUPBOX, // Styles
10,280,
350,100,
hWnd,
NULL,
hInst, NULL);
CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"Batch Process Mode",
WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON, // Styles
10,20,
300,20,
hGrpButtons,
(HMENU)IDC_CHK1,
hInst, NULL);
CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"Single Process Mode (Preview Mode)",
WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON, // Styles
10,45,
300,20,
hGrpButtons,
(HMENU)IDC_CHK2,
hInst, NULL);