need Win Api help ;-)
Вобщем, просто окошко, 2 группы радиокнопок, 2 кнопки, 1 ListBox
Интерфейс
первая группа радиокнопок (для работы с листбоксом)
ADD
CHANGE
DELETE
вторая группа рабиокнопок (для работы с окошком)
REFRESH
CLOSE
Для первой группы радиокнопок есть кнопочка Submit!
для второй - Execute!
Мне нада так чтоб при выделенной радиокнопке CLOSE и последующем нажатии Execute! окошко соответственно закрывалось. Я сделал это вот таким вот способом:
/////////Ну, это все мои элементы окна
case WM_CREATE:
///////////////////////////////////// LISTBOX
hListBox = CreateWindow("LISTBOX", "CarCatalogListBox", WS_CHILD | WS_VSCROLL | WS_BORDER | WS_VISIBLE | LBS_SORT, 150, 10, 530, 355, hWnd, NULL, NULL, NULL);
UpdateWindow(hListBox);
/////////////////////////////////////
hRadioOne = CreateWindow("BUTTON", "ADD", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 30, 130, 30, hWnd, (HMENU)10001, NULL, NULL);
UpdateWindow(hRadioOne);
hRadioTwo = CreateWindow("BUTTON", "CHANGE", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 55, 130, 30, hWnd, (HMENU)10002, NULL, NULL);
UpdateWindow(hRadioTwo);
hRadioThd = CreateWindow("BUTTON", "DELETE", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 80, 130, 30, hWnd, (HMENU)10003, NULL, NULL);
UpdateWindow(hRadioThd);
///////////////////////////////////// BUTTON
hSubmit = CreateWindow("BUTTON", "Submit!", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE, 10, 110, 130, 30, hWnd, /*NULL*/(HMENU)1, NULL, NULL/*(LPVOID)1*/);
UpdateWindow(hSubmit);
/////////////////////////////////////
hRadioFth = CreateWindow("BUTTON", "REFRESH", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 140, 130, 30, hWnd, (HMENU)10004, NULL, NULL);
UpdateWindow(hRadioFth);
hRadioFif = CreateWindow("BUTTON", "CLOSE", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 165, 130, 30, hWnd, (HMENU)10005, NULL, NULL);
UpdateWindow(hRadioFif);
//////////////////////////////////// BUTTON
hExec = CreateWindow("BUTTON", "Execute!", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE, 10, 195, 130, 30, hWnd, /*NULL*/(HMENU)2, NULL, NULL/*(LPVOID)2*/);
UpdateWindow(hExec);
///////////////////////////////////
break;
//////
case WM_COMMAND:
// 2 группы радиокнопок:
if (10001<= LOWORD(wParam) && LOWORD(wParam) <= 10003)
{
CheckRadioButton(hWnd, 10001, 10003, LOWORD(wParam));
}
if (10004<= LOWORD(wParam) && LOWORD(wParam) <= 10005)
{
CheckRadioButton(hWnd, 10004, 10005, LOWORD(wParam));
}
// Получаем HWND радиокнопок и получение их состояния (отмечена или нет):
if (LOWORD(wParam == 10001))
{
HWND hRadioButtn1 = GetDlgItem(hWnd, 10001);
res1 = SendMessage(hRadioButtn1, BM_GETCHECK, 0, 0);
}
if (LOWORD(wParam == 10002))
{
HWND hRadioButtn2 = GetDlgItem(hWnd, 10002);
res2 = SendMessage(hRadioButtn2, BM_GETCHECK, 0, 0);
}
if (LOWORD(wParam == 10003))
{
HWND hRadioButtn3 = GetDlgItem(hWnd, 10003);
res3 = SendMessage(hRadioButtn3, BM_GETCHECK, 0, 0);
}
if (LOWORD(wParam == 10004))
{
HWND hRadioButtn4 = GetDlgItem(hWnd, 10004);
res4 = SendMessage(hRadioButtn4, BM_GETCHECK, 0, 0);
}
if (LOWORD(wParam == 10005))
{
HWND hRadioButtn5 = GetDlgItem(hWnd, 10005);
res5 = SendMessage(hRadioButtn5, BM_GETCHECK, 0, 0);
}
/* Далее при выделенной радиокнопке CLOSE и последующем нажатии кнопочки execute! программа вежливо спрашивает - Че, правда чтоли закрыть окно????*/
switch (wParam)
{
case 2:
if (res4 == BST_CHECKED)
SetWindowText(hWnd, "Buttn checked");
if (res5 == BST_CHECKED)
{
if( IDOK == MessageBox(hWnd, "Realy Wnat to Quit?", "Quit?", MB_OKCANCEL | MB_ICONQUESTION))
PostQuitMessage(0)/*SendMessage(hWnd, WM_DESTROY, NULL, NULL)*/;
}
break;
/*тока вот незадача - после того как я выделяю REFRESH радокнопка CLOSE всеравно (!) остается выделенной, точней, статус res5 == BST_CHECKED !!! Помогите сделать все правильно */
PS RSDN чё то не работает... =(((
/*тока вот незадача - после того как я выделяю REFRESH радокнопка CLOSE всеравно (!) остается выделенной, точней, статус res5 == BST_CHECKED !!! Помогите сделать все правильно */
измени стиль BS_RADIOBUTTON на BS_AUTORADIOBUTTON
измени стиль BS_RADIOBUTTON на BS_AUTORADIOBUTTON
Дык группы то пропадут... Тогда ведь не будет у меня уже 2 грппы радиокнопок... Но это уже не проблема. Щас все работает...
Ну, кому ещё интересно, могу выложить... Хотя, как мне кажется это был вопрос новичка, коим я являюсь, но мало ли. может у кого то та же проблема...
Дык группы то пропадут... Тогда ведь не будет у меня уже 2 грппы радиокнопок... Но это уже не проблема. Щас все работает...
Дык, для группирования переключателей, первый переключатель должен иметь стиль WS_GROUP. Я думал тебе это известно.
hRadioOne = CreateWindow("BUTTON", "ADD", WS_GROUP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON, 10, 30, 130, 30, hWnd, (HMENU)10001, NULL, NULL);
...
...
hRadioFth = CreateWindow("BUTTON", "REFRESH", WS_GROUP|WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 10, 140, 130, 30, hWnd, (HMENU)10004, NULL, NULL);
UpdateWindow(hRadioFth);
...
и две группы.
Дык, для группирования переключателей, первый переключатель должен иметь стиль WS_GROUP. Я думал тебе это известно.
hRadioOne = CreateWindow("BUTTON", "ADD", WS_GROUP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON, 10, 30, 130, 30, hWnd, (HMENU)10001, NULL, NULL);
...
...
hRadioFth = CreateWindow("BUTTON", "REFRESH", WS_GROUP|WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 10, 140, 130, 30, hWnd, (HMENU)10004, NULL, NULL);
UpdateWindow(hRadioFth);
...
и две группы.
Чесно не знал постоку поскольку я пока n00b =( Но сейчас все в порядке. Все работает...
Попробую ещё и этим способом. Нада все всесторонне осваивать ;-)