ДАНО: Check баттон, который Push Like (по сути это кнопка с двумя состояниями: "ВЖАТО", "ОТЖАТО"). НЕОБХОДИМО: Чтобы при состоянии "ВЖАТО" фон менялся скажем на зеленый. ЧТО ПРОБОВАЛ: - обработка WM_CTLCOLOR (не помогает, меняется фон у всех контролов, кроме баттонов, потому как для баттонов необходимо ставить стиль BS_OWNERDRAW, а именно этот стиль нельзя комбинировать с другими и соотв. кнопка становится не "Push Like") - обработка DrawItem (таже песня с BS_OWNERDRAW, а как самому рисовать кнопку аля "Push Like" я не нашел, в частности вот эта DrawFrameControl ф-ция отвечает за прорисовку баттона. И как ей рисовать "Push Like" check батон не знаю.) вот пару линков, которыми я пользовался: http://www.firststeps.ru/mfc/steps/help/r.php?487 http://www.firststeps.ru/mfc/steps/r.php?196 http://www.firststeps.ru/mfc/steps/help/r.php?312 Кто знает решение? PS: в прикрепленном файле проект в 6-й студии где реализовано все что я пытался сделать...
Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\gdi32.inc include \masm32\include\comdlg32.inc include \masm32\include\shell32.inc include \masm32\include\comctl32.inc include \masm32\include\masm32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\comdlg32.lib includelib \masm32\lib\shell32.lib includelib \masm32\lib\comctl32.lib includelib \masm32\lib\masm32.lib DlgProc proto hDlg:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD IDD_DLG1 equ 1000 IDC_BTN1 equ 1001 .data? hInstance dd ? btnDown dd ? hBtn dd ? hBmp1 dd ? hBmp2 dd ? .data .code start: invoke GetModuleHandle, NULL mov hInstance, eax invoke DialogBoxParam, hInstance, IDD_DLG1, 0, ADDR DlgProc, 0 DlgProc proc hDlg:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD .if uMsg == WM_INITDIALOG mov btnDown, 0 invoke GetDlgItem, hDlg, IDC_BTN1 mov hBtn, eax invoke LoadBitmap, hInstance, 2 mov hBmp2, eax invoke LoadBitmap, hInstance, 1 mov hBmp1, eax invoke SendMessage, hBtn, BM_SETIMAGE, IMAGE_BITMAP, hBmp2 .elseif uMsg == WM_CLOSE invoke ExitProcess, NULL .elseif uMsg == WM_COMMAND mov eax, wParam shr eax,16 .if ax==BN_CLICKED mov eax,wParam .if ax == IDC_BTN1 .if btnDown == 1 invoke SendMessage, hBtn, BM_SETIMAGE, IMAGE_BITMAP, hBmp2 mov btnDown, 0 .else invoke SendMessage, hBtn, BM_SETIMAGE, IMAGE_BITMAP, hBmp1 mov btnDown, 1 .endif .endif .endif .else mov eax, FALSE ret .endif mov eax, TRUE ret DlgProc endp end start