Отрисовка текста после нажатия на Button. Мне надо нарисовать одну строку в окне до нажатия на кнопку а другую после. Ни чего лучше ниже проиведённого куска я придумать не смог. С первой строкой проблем нет,вторая строка тоже отображается но не сразу после нажатия на кнопку, а после каких нибудь действий с окном (свернуть, развернуть,максимизировать) Подскажите начинающему почему? и как это исправить? .data sem BOOL FALSE .................... .code ............... start: ............... WinMain proc ....................... INVOKE CreateWindowEx, ............................. .............................. .BREAK .IF (!eax) INVOKE TranslateMessage, ADDR msg INVOKE DispatchMessage, ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp WndProc proc .IF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==WM_PAINT invoke BeginPaint,hWnd, ADDR ps mov hdc,eax invoke SetBkMode,hdc,TRANSPARENT invoke TextOut,hdc,65,2,ADDR TestString,SIZEOF TestString .IF sem ==TRUE invoke TextOut,hdc,65,130,ADDR TestString1,SIZEOF TestString1 .ENDIF .ELSEIF uMsg==WM_CREATE invoke EndPaint,hWnd, ADDR ps invoke CreateWindowEx,NULL, ADDR ButtonClassName,ADDR ButtonText,\ ............................. mov hwndButton,eax .ELSEIF uMsg==WM_COMMAND mov eax,wParam .IF ax==ButtonID shr eax,16 .IF ax==BN_CLICKED mov sem ,TRUE .ENDIF .ENDIF .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start
Ты бы оформил код по-человечески, используя тэги Код (Text): Тебе не кажется странным, что рисование начинается по WM_PAINT, а заканчивается по WM_CREATE ?
Что-то мне подсказывает, что эти строки стоит поменять местами: Код (Text): .ELSEIF uMsg==WM_CREATE invoke EndPaint,hWnd, ADDR ps
Вотже блин! поторопился задать вопрос. Ещё раз внимательно перечитал статью Iczelion "Отрисовка текста" и тутже нашёл ответ . Есть правда ещё один вопрос немного связаный с предыдущим. С " Edit " вроде всё понятно, есть такой контрол в Win32 Api а вот контрола Label я там не обнаружил. Тогда как чтото подобное лучше реализовать в MASM32 ?
На счёт строк .ELSEIF uMsg==WM_CREATE invoke EndPaint,hWnd, ADDR ps когда из исходника вырезал лишнее и копировал в окно сообщения не туда вставил. На самом деле: invoke EndPaint,hWnd, ADDR ps .ELSEIF uMsg==WM_CREATE Так что за оформление и за ошибку извиняюсь.
cresta Sharp Благодарю за ответы. (почти все вопросы у меня изза незнания английского - это по я по поводу "static")