Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

need Win Api help ;-)

8.4K
30 января 2005 года
F1aSh
8 / / 30.01.2005
Я хочу сделать прогу (ну, вообще то это мое задание в универе, но самому очень интересно. Дык вот не задача. Кое что несростается)
Вобщем, просто окошко, 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 чё то не работает... =(((
368
30 января 2005 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by F1aSh
/*тока вот незадача - после того как я выделяю REFRESH радокнопка CLOSE всеравно (!) остается выделенной, точней, статус res5 == BST_CHECKED !!! Помогите сделать все правильно */


измени стиль BS_RADIOBUTTON на BS_AUTORADIOBUTTON

8.4K
02 февраля 2005 года
F1aSh
8 / / 30.01.2005
Цитата:
Originally posted by rostyslav

измени стиль BS_RADIOBUTTON на BS_AUTORADIOBUTTON



Дык группы то пропадут... Тогда ведь не будет у меня уже 2 грппы радиокнопок... Но это уже не проблема. Щас все работает...

Ну, кому ещё интересно, могу выложить... Хотя, как мне кажется это был вопрос новичка, коим я являюсь, но мало ли. может у кого то та же проблема...

368
02 февраля 2005 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by F1aSh
Дык группы то пропадут... Тогда ведь не будет у меня уже 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);
...

и две группы.

8.4K
04 февраля 2005 года
F1aSh
8 / / 30.01.2005
Цитата:
Originally posted by rostyslav

Дык, для группирования переключателей, первый переключатель должен иметь стиль 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 =( Но сейчас все в порядке. Все работает...
Попробую ещё и этим способом. Нада все всесторонне осваивать ;-)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог