Пробовал получать сообщения от слайдера Edit-ов и через WM_COMMAND (EN_VSCROLL), и через WM_VSCROLL. Никаких данных не передается вообще. С отдельным вертикальным слайдером все в порядке, даже когда меняю тексты в Edit-ах - сообщения поступают в процедуру окна. Может что-то делаю непрвильно? Как мне получить сообщение от слайдера Edit-а? Где можно еще получить информацию об органах управления окна? Вот эта программа: []
Вижу, что тут под слайдером подразумевается скроллбар вообще. Скроллбар - это такая надстройка над неклиентской областью окна, косящая под дочернее окно, но таковым не являющаяся. Скроллбар посылает сообщения WM_VSCROLL и WM_HSCROLL только своему окну, а не родителю своего окна. Поэтому сообщения получает сам edit, а не главное окно. Тем не менее, эти сообщения можно попробовать перехватить в цикле обработки сообщений: Код (Text): while(1){ if(!GetMessage(&MSG,0,0,0)) break; if(MSG.hwnd == hEdit && MSG.message == WM_VSCROLL){ /* вертикальный скроллинг */ } if(MSG.hwnd == hEdit && MSG.message == WM_HSCROLL){ /* горизонтальный */ } TranslateMessage(&MSG); DispatchMessage(&MSG); } Если не получится, то спасёт только сабклассинг.
А если я на асме пишу,а не на С,как ты мне написал Посторался примерно подогнать под асм: ... START: ; получаем дескриптор приложения ; регистрация класса основного окна ; создаем окно: ДЕСК - его дескриптор invoke ShowWindow,ДЕСК,SW_SHOWNORMAL invoke UpdateWindow,ДЕСК MSG_LOOP: invoke GetMessage,offset MSG,0,0,0 cmp eax,0 je END_LOOP mov eax,hEdit cmp eax,dword ptr MSG.hwnd jne MSG_LOOP1 mov eax,WM_VSCROLL cmp eax,dword ptr MSG.message jne MSG_LOOP1 invoke SendMessage,ДЕСК,WM_VSCROLL,300,300 MSG_LOOP1: invoke TranslateMessage,offset MSG invoke DispatchMessage,offset MSG jmp MSG_LOOP END_LOOP: invoke ExitProcess,MSG.wParam _ERROR: ...
Alians1978 Да есть готовый исходник в пакете masm32\examples\bcraven\controls\controls.asm(controls.exe) P. S. У тебя может лежать в другой папке, все от версии пакета MASM32 зависит, но он там точно есть! Там используются все тебе нужные controls и без всяких: