winapi — Как узнать состояние переключателей в приложении win32 c ++?

.
Я новичок в 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);
}

но когда я нажимаю на свою отмененную кнопку, чтобы проверить состояние переключателя, она показывает, что я не отмечен как в проверенных, так и в непроверенных условиях.
Пожалуйста, помогите мне выбраться из этого. , ,

2

Решение

if(BM_GETCHECK==BST_CHECKED)

Это условие всегда будет оцениваться как ложное. Вот почему он говорит вам, что кнопка не проверяется независимо от состояния кнопки.

В вашем случае вы, вероятно, хотите что-то вроде этого:

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 для каждого, который перезаписывается каждый раз, когда вы переназначаете его.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb775986(v=vs.85).aspx

3

Другие решения

Если ваша кнопка была создана как часть диалогового шаблона (диалогового ресурса), то вы должны использовать

if (IsDlgButtonChecked(hDlg, buttonID) == BST_CHECKED)

Использовать шаблон диалога гораздо проще, чем создавать окна кнопок вручную, как это делает ваш код …

0

По вопросам рекламы [email protected]