如何检查使用单选按钮选择的大小写 Win 32 api

How to check what case is selected with radio button Win 32 api

我正在使用 C++ 中的 win 32 api 来开发桌面应用程序。 在这一点上,我想使用带有两种情况的单选按钮,并且根据用户选择的情况,我想创建一个对话框。

我使用资源文件创建包含单选按钮的对话框:

IDD_INPUT DIALOG DISCARDABLE  0, 0, 150, 150
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
CAPTION "Pricing Input"
FONT 8, "MS Sans Serif"
BEGIN
    RADIOBUTTON     "Historical Data",IDC_HISTO,20, 20, 50,14
    RADIOBUTTON     "User Inpu",IDC_USER,90,20,50,14
    PUSHBUTTON      "Ok",IDC_VALID,60,100,50,14
END

对话框创建如下:

hWndDlgBox = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_INPUT), hWnd, (DLGPROC)DlgInput);

DlgInput 过程类似于:

LRESULT CALLBACK DlgInput(HWND hWnDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    switch (Msg)
    {
    case WM_INITDIALOG:
    {
        return TRUE;
    }
    break;
    case WM_COMMAND:
    {
        switch (LOWORD(wParam))
        {
        case IDC_VALID:
        {
            if (GetDlgItem(hWnDlg, IDC_USER)) {
                // Open dialog box x
            }
            else {
                //Open dialog box y 
            }
            SendMessage(hWnDlg, WM_CLOSE, 0, 0);

        }
        break;
        }
    case WM_CLOSE:
        DestroyWindow(hWnDlg);
        hWndDlgBox = NULL;
        break;

    default:
        return FALSE;
        break;
    }
    }
}

所以在 IDC_VALID 的情况下,我想检查单选按钮的值,我尝试使用 GetDlgItem 函数,但我真的不明白它的值 returns。我看到可以使用 BM_GETCHECK 消息,但我不确定如何使用它。 此外,当我单击一个案例时,对话框会关闭,我不知道为什么。

有人可以向我解释单选按钮的工作原理吗?

您可以尝试发送 BM_GETCHECK message to the control and check the return value. And you will need the HWND of your control, to get that from the control ID, you could try to call GetDlgItem()