case WM_CTLCOLOREDIT:
return (LRESULT)GetStockObject(BLACK_BRUSH);//здесь возвращаю кисть по своему желанию у меня возвращаеться стандартная черная кисть которой зальется все едиты на твоем диалоге
Цвет текста в Edit Box
Кто знает? Помогите!
Обрабатывай WM_CTLCOLOREDIT.
#include <windowsx.h>
#include "resource.h"
#include <commctrl.h>
#pragma comment(lib, "comctl32.lib")
HBRUSH hDlgBrush; // кисть
HBRUSH hEditBrush;
void Dlg_Close(HWND hwnd)
{
EndDialog(hwnd, 0);
}
BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
hDlgBrush = CreateSolidBrush(RGB(0xc5, 0xc5, 0xc5));
hEditBrush = CreateSolidBrush(RGB(56, 118, 34));
return true;
}
void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch (id)
{
case IDC_BUTTON2:
{
EndDialog(hwnd, 0);
break;
}
default: break;
}
}
BOOL OnCtlColor(HDC dc, HWND hWnd)
{
HBRUSH hbr = NULL;
COLORREF cr = RGB(0xA0, 0, 0);
BOOL mode = TRANSPARENT;
UINT ctrl = GetDlgCtrlID(hWnd);
switch(ctrl)
{
case IDC_EDIT1:
{
cr = RGB(0, 255, 0); // текст
hbr = (HBRUSH)GetStockObject(BLACK_BRUSH); // фон
break;
}
case IDC_EDIT2:
{
cr = RGB(144, 144, 144);
hbr = hEditBrush;
break;
}
break;
case IDC_EDIT3:
{
cr = RGB(255, 0, 0);
hbr = (HBRUSH)GetStockObject(GRAY_BRUSH);
break;
}
}
SetBkMode(dc, mode);
SetTextColor(dc, cr);
return (BOOL)hbr;
}
INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
HANDLE_MSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
HANDLE_MSG(hwnd, WM_COMMAND, Dlg_OnCommand);
HANDLE_MSG(hwnd, WM_CLOSE, Dlg_Close);
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORDLG: return (int)hDlgBrush;
case WM_CTLCOLOREDIT: return OnCtlColor((HDC)wParam, (HWND)lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
InitCommonControls();
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), NULL, Dlg_Proc);
return 0;
}
что, всё так сложно? а напрямую никак?
тебе самое главное при сообщении WM_CTLCOLOREDIT вернуть кисть которой будет заливаться твой едит.
Код:
и все
примерно на этом я остановился, изменение касается только цвета текста:
case WM_CTLCOLOREDIT:
SetBkMode((HDC)wParam,OPAQUE);
SetTextColor((HDC)wParam,RGB(0,128,0));
return (DWORD)GetSysColorBrush(COLOR_WINDOW);