Люди помогите забацать кнопку с цветным текстом. Пробовал через WM_CTLCOLORBTN, так оказывается для кнопок не годится, знаю можно вроде через TextOut, но хочется как-нибудь по другому.
видимо, тебе придётся обрабатывать WM_DRAWITEM и писать текст с помощью DrawText Code (Text): .ElseIf uMsg == WM_DRAWITEM push esi mov esi, lParam ASSUME esi:ptr DRAWITEMSTRUCT <...> ; write the text invoke GetDlgItemText, hWnd, [esi].CtlID, ADDR sBtnText, SIZEOF sBtnText invoke SetBkMode, [esi].hdc, TRANSPARENT invoke DrawText, [esi].hdc, ADDR sBtnText, -1, ADDR [esi].rcItem, DT_CENTER or DT_VCENTER or DT_SINGLELINE <...> ASSUME esi:NOTHING pop esi ну или что-то в этом роде
Jupiter Практически тоже самое что и с TextOut, ну все равно спасибо лишним не будет. Но есть одна проблема цвет текста меняеться, а вот кнопочка то не ресуется!
Jupiter С радостью: Code (Text): section 'data' data readable writeable ... msg MSG buffer rb 100h section 'code' code readable executable start: xor ebx,ebx ... invoke CreateDialogParam,[hInstance],IDD_MAIN,ebx,ebx,ebx msg_loop: invoke GetMessage,msg,ebx,ebx,ebx test eax,eax jz end_loop invoke IsDialogMessage,[hDlg],msg test eax,eax jnz msg_loop invoke TranslateMessage,msg invoke DispatchMessage,msg jmp msg_loop end_loop: invoke ExitProcess,[msg.wParam] proc WndProc hWnd,uMsg,wParam,lParam push ebx esi edi mov eax,[uMsg] ... cmp eax,WM_DRAWITEM je wm_drawitem ... defwndproc: invoke DefWindowProc,[hWnd],[uMsg],[wParam],[lParam] jmp finish wm_drawitem: mov esi,[lParam] cmp [esi+DRAWITEMSTRUCT.CtlID],ID_BTN0 jne finish invoke GetDlgItemText,[hWnd],[esi+DRAWITEMSTRUCT.CtlID],buffer,100h mov edi,[esi+DRAWITEMSTRUCT.hDC] invoke SetBkMode,edi,TRANSPARENT invoke SetTextColor,edi,0ffh lea edx,[esi+DRAWITEMSTRUCT.rcItem] invoke DrawText,edi,buffer,-1,edx,DC_CENTER or DC_VCENTER or DC_SINGLELINE xor eax,eax inc eax jmp finish ... finish: pop edi esi ebx ret endp Ну вроде что-то типа этого Вообще-то я понимаю почему не ресуется кнопка(т.к. я ее не ресую, а должен) и знаю как нарисовать (обычную прямоугольную), но я использую манифест в программе и хочу чтобы кнопки были как в XP.