C++ 如何在win32 c++;应用

C++ 如何在win32 c++;应用,c++,winapi,win32com,C++,Winapi,Win32com,。 我是新的C++,并试图获得的价值,单选按钮用于在我的应用程序中使用。 但我无法获得单选按钮的正确状态。 以下是我编写的代码: hDecRB = CreateWindow(TEXT("BUTTON"), TEXT("Decimal Result"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,20, 80, 150, 30, hWnd, NULL, NULL, NULL); hDecRB = Creat

。 我是新的C++,并试图获得的价值,单选按钮用于在我的应用程序中使用。 但我无法获得单选按钮的正确状态。 以下是我编写的代码:

hDecRB = CreateWindow(TEXT("BUTTON"), TEXT("Decimal Result"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,20, 80, 150, 30, hWnd, NULL, NULL, NULL);
                        hDecRB = CreateWindow(TEXT("BUTTON"), TEXT("Binary Result"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,20, 120, 150, 30, hWnd, NULL, NULL, NULL);
                        hDecRB = CreateWindow(TEXT("BUTTON"), TEXT("Octal Result"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,20, 160, 150, 30, hWnd, NULL, NULL, NULL);
                        hDecRB = CreateWindow(TEXT("BUTTON"), TEXT("Hex Result"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,20, 200, 150, 30, hWnd, NULL, NULL, NULL);


                       if(BM_GETCHECK==BST_CHECKED)
                       {   
                           flag=Button_GetState(hBinRB);

                           MessageBox(NULL,"CHECKED","sachin",MB_OK);
                       }
                       else
                       {
                           MessageBox(NULL,"Binary not checked","sachin",MB_OK);
                            MessageBox(NULL,(LPCSTR)flag,"sachin",MB_OK);
                       }
但是,当我点击我的dedecated按钮来检查单选按钮状态时,它会显示我在选中和未选中条件下都未选中。。 请帮我摆脱这个

if(BM_GETCHECK==BST_CHECKED)
此条件的计算结果将始终为false。这就是它告诉您无论按钮状态如何,按钮都未选中的原因

在您的情况下,您可能需要以下内容:

if(Button_GetState(hDecRB) == BST_CHECKED) {
    MessageBox(NULL,"CHECKED","sachin",MB_OK);
}
else {
    MessageBox(NULL,"Binary not checked","sachin",MB_OK);
    MessageBox(NULL,(LPCSTR)flag,"sachin",MB_OK);
}
您还需要将每个按钮存储在不同的HWND中。您正在为每个文件使用hDecRB,每次重新分配时都会覆盖该文件


如果按钮是作为对话框模板(对话框资源)的一部分创建的,则可以使用

if (IsDlgButtonChecked(hDlg, buttonID) == BST_CHECKED)
使用对话框模板比像代码那样手动创建按钮窗口要容易得多…

如果()语句比较两个常量值,它将始终为false。您当然希望实际使用标志值,
if(已选中标志和BST)
。请考虑使用C++类库来帮助您编写这种代码,如MFC、Qt、WxWIDGET,如果您想使用原始WiAPI,etc. Petzold是必不可少的阅读工具。