У меня на форме 2 COMBOBOX: Cbo1 и Cbo2. При выборе строки в Cbo1 я перехватываю сообщение CBN_SELCHANGE и выполняю ряд функций. Одна из них заполняет строки в Cbo2. Когда я выбираю строку в Cbo2 посылается главному окну такое же сообщение CBN_SELCHANGE. Это сообщение влияет на работу Cbo1. Как предовратить посылку сообщения из Cbo2?? Заранее всем благодарен за помощь, с уважением, Valentin
Фильтровать нужно на хендл/ид Когда приходит WM_COMMAND младшее слово wParam содержит ид контрола, lParam - его хендл Например: if (LOWORD (wParam)==ID_CBO1) { ... } или if (lParam == hCbo1) { ... } А вообще msdn. Либо любой хелп по апи.
KeSqueer Посмотрите, может я что-то не так делаю, но на IDC_CBO2 нет реакции. .elseif eax == WM_COMMAND mov eax, [wParam] shr eax, 16 .if eax == CBN_SELCHANGE Call Material ;вызов ф-ции после выбора строки (здесь работает) .elseif eax == IDC_CBO2 invoke MessageBox, 0, ADDR bufferRasc, ADDR MesTM5, MB_OK (..здесь нет)
Код (Text): .elseif eax == WM_COMMAND mov eax,[wParam] mov edx,eax shr eax,16 and edx,0xFFFF .if edx == IDC_CBO1 && eax == CBN_SELCHANGE call Material
IceStudent CBN_SELCHANGE работает только так: .elseif eax == WM_COMMAND mov eax, [wParam] shr eax, 16 .if eax == CBN_SELCHANGE Call Material ;вызов ф-ции после выбора строки (здесь работает) .................................. иначе-нет. А вот .elseif eax == WM_COMMAND mov eax,[wParam] mov edx,eax shr eax,16 and edx,0xFFFF .if edx == IDC_CBO1 .................................. то же не дает никакой реакции. .................................................
Кстати, кто знает как лучше: Код (Text): mov eax, [wParam] mov edx, eax shr eax, 16 and edx, 0xFFFF или Код (Text): movzx edx, word [wParam] movzx eax, word [wParam+2] ?