Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
[Win32] Вот MSDN рулит-то! Меня почти всегда выручал ;-)))) 25.11.03 09:51 Число просмотров: 2201
Автор: HandleX <Александр М.> Статус: The Elderman
|
> есть 3 вопроса по комбо-бокс контролу: > 1) Создаю combo-box в ресурснике. Как можно отловить выбор > нового элемента? Сообщения которые отправляются контролу > отловить по моему нельзя т.к. создаю не через > CreateWindow() (или можно?), может что-нибудь отсылается > окну на котором ежит контрол? Конечно. Было бы глупо, если бы контрол посылал сообщения сам себе ;-)
Разберись со всем сообщениями типа CBN_* и не забудь, что на самом деле они шлются через WM_COMMAND. Почитай про WM_COMMAND...
-------------
The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
WM_COMMAND
wNotifyCode = HIWORD(wParam); // notification code
wID = LOWORD(wParam); // item, control, or accelerator identifier
hwndCtl = (HWND) lParam; // handle of control
Parameters
wNotifyCode
Value of the high-order word of wParam. Specifies the notification code if the message is from a control. If the message is from an accelerator, this parameter is 1. If the message is from a menu, this parameter is 0.
wID
Value of the low-order word of wParam. Specifies the identifier of the menu item, control, or accelerator.
hwndCtl
Value of lParam. Identifies the control sending the message if the message is from a control. Otherwise, this parameter is NULL.
Return Values
If an application processes this message, it should return zero.
----------------
и т.д.
> 2) Можно ли сделать комбо-бокc только для чтения? У комбо есть стили. Что ты понимаешь под «только для чтения»? Чтобы нельзя было перебить текст в комбо? Это стиль CBS_DROPDOWNLIST. Прочитай про все CBS_*, это интересно ;-)
> 3) Глупый вопрос, но как увеличить высоту выпадающего меню > комбо-бокса в VC++.NET . В VC++6 нужно просто растянуть > его, а в VC7 по высоте не растягивается. Вот с .net засада, я не знаю.
|
<programming>
|
[Win32] combox-box control 25.11.03 07:43
Автор: makeworld Статус: Member Отредактировано 25.11.03 07:45 Количество правок: 1
|
есть 3 вопроса по комбо-бокс контролу:
1) Создаю combo-box в ресурснике. Как можно отловить выбор нового элемента? Сообщения которые отправляются контролу отловить по моему нельзя т.к. создаю не через CreateWindow() (или можно?), может что-нибудь отсылается окну на котором ежит контрол?
Поюзал Spy++, во время операций по выбору элементов комбо-бокса окну отправляются примерно такие сообщения (кусок лога):
WM_COMMAND wNotifyCode:CBN_DROPDOWN
WM_COMMAND wNotifyCode:CBN_SELENDOK
WM_COMMAND wNotifyCode:CBN_CLOSEUP
WM_COMMAND wNotifyCode:CBN_SELCHANGE
WM_COMMAND wNotifyCode:CBN_SELENDCANCEL
WM_COMMAND wNotifyCode:CBN_CLOSEUP
wNotifyCode это, как я понимаю, wParam? Почему-то при обработке WM_COMMAND c wParam любым из вышеперечисленных никакого эффекта нет.
2) Можно ли сделать комбо-бокc только для чтения?
3) Глупый вопрос, но как увеличить высоту выпадающего меню комбо-бокса в VC++.NET . В VC++6 нужно просто растянуть его, а в VC7 по высоте не растягивается.
|
|
[Win32] Вот MSDN рулит-то! Меня почти всегда выручал ;-)))) 25.11.03 09:51
Автор: HandleX <Александр М.> Статус: The Elderman
|
> есть 3 вопроса по комбо-бокс контролу: > 1) Создаю combo-box в ресурснике. Как можно отловить выбор > нового элемента? Сообщения которые отправляются контролу > отловить по моему нельзя т.к. создаю не через > CreateWindow() (или можно?), может что-нибудь отсылается > окну на котором ежит контрол? Конечно. Было бы глупо, если бы контрол посылал сообщения сам себе ;-)
Разберись со всем сообщениями типа CBN_* и не забудь, что на самом деле они шлются через WM_COMMAND. Почитай про WM_COMMAND...
-------------
The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
WM_COMMAND
wNotifyCode = HIWORD(wParam); // notification code
wID = LOWORD(wParam); // item, control, or accelerator identifier
hwndCtl = (HWND) lParam; // handle of control
Parameters
wNotifyCode
Value of the high-order word of wParam. Specifies the notification code if the message is from a control. If the message is from an accelerator, this parameter is 1. If the message is from a menu, this parameter is 0.
wID
Value of the low-order word of wParam. Specifies the identifier of the menu item, control, or accelerator.
hwndCtl
Value of lParam. Identifies the control sending the message if the message is from a control. Otherwise, this parameter is NULL.
Return Values
If an application processes this message, it should return zero.
----------------
и т.д.
> 2) Можно ли сделать комбо-бокc только для чтения? У комбо есть стили. Что ты понимаешь под «только для чтения»? Чтобы нельзя было перебить текст в комбо? Это стиль CBS_DROPDOWNLIST. Прочитай про все CBS_*, это интересно ;-)
> 3) Глупый вопрос, но как увеличить высоту выпадающего меню > комбо-бокса в VC++.NET . В VC++6 нужно просто растянуть > его, а в VC7 по высоте не растягивается. Вот с .net засада, я не знаю.
|
| |
Опять таки API, MoveWindow. Высота задается, как (высота... 07.03.04 17:43
Автор: alibek Статус: Незарегистрированный пользователь
|
> > 3) Глупый вопрос, но как увеличить высоту выпадающего > меню > > комбо-бокса в VC++.NET . В VC++6 нужно просто > растянуть > > его, а в VC7 по высоте не растягивается. > Вот с .net засада, я не знаю.
Опять таки API, MoveWindow. Высота задается, как (высота одной строки)*(количество строк + 2); высота строки определяется через CB_GetItemHeight.
|
| |
[Win32] спасибо.. точняк, мсдн рулит 26.11.03 07:41
Автор: makeworld Статус: Member
|
|
|
|