Собственно, правильно ли я создаю класс? Почему-то нет сообщений WM_PAINT в процедуре дочернего окна. Идет только одно сообщение при запуске.
Все правильно. Несколько замечаний: 1) После RegisterClassEx правильнее проверять регистр ax а не eax. 2) В RegExtClass почему lea ebx, [wbc]/mov dword [ebx+4], eax? mov [wbc.lpfnWndProc], eax и т.п. 3) invoke UpdateWindow,[hwnd] вызовет отправку WM_PAINT только в том случае, если окно имеет область, необходимую для обновления. Если окно ничем не перекрывалось, не выдвигалось за границы экрана и т.п., области для обновления не будет. Чтобы вручную установить область для обновления, нужно вызвать invoke InvalidateRect, [hwnd], 0, TRUE. После этого, можно вызвать UpdateWindow для немедленной отправки WM_PAINT окну, либо не вызывать, в этом случае WM_PAINT придет тогда, когда не будет никаких других сообщений в очереди окна. ЗЫ Вызов InvalidateRect в таком случае может вызвать мерцание окна.
Не совсем понял, почему? я же проверяю на 0 По 2 пункту - это я запарил InvalidateRect - я думал она не работает должным образом, а оказывается локальная переменная draw глючит. перенес draw в глобальную - все отлично. Скорей вссего дело в фасме (1.69.10) Думаю с этим можно справится. Вообще, каким образом это делается в стандартных контролах винды (кнопки и т.д.) ? и еще вопрос в CreateWindowEx я передаю указатель на lpWindowName, и как бы этот указатель поймать в функции окна для отрисовки текста. А то как-то по идиотски получается: Код (Text): lea eax,[text] invoke SendMessage,[hwnd],WM_GETTEXT,100h,eax
Потому что эта функция возвращает результат в ax, а не в eax. Старшая часть регистра eax может быть не равна нулю. Она не глючит, это обычное поведение локальных переменных. Их значения портятся между вызовами процедуры. Соответственно, фасм тут ни при чем Этот указатель передается в структуру CREATESTRUCT, указатель на которую передается процедуре окна при отправке WM_CREATE (через lParam или wParam не помню). Можно сохранить этот текст в глобальной переменной, но если нужно создавать несколько окон с разным текстом, следует почитать о WNDCLASS.cbWndExtra и SetWindowLong и SetWindowProp. Это позволит сохранять индивидуальные данные для каждого созданного окна. Так это и делается в стандартных элементах управления. icq 4665З299О пиши, все равно нечем заняться...