[問題] 如何改變edit control背景顏色及文字顏色
※ [本文轉錄自 C_and_CPP 看板 #1C4d_sTd ]
作者: lovecold (小豬頭) 看板: C_and_CPP
標題: [問題] 如何改變edit control背景顏色及文字顏色
時間: Sat Jun 12 02:26:59 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
想改變edit control的背景顏色及文字顏色,但不使用WM_CTLCOLOREDIT這個訊息
希望得到的正確結果:
希望能改變顏色
程式跑出來的錯誤結果:
無法改變顏色
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
vc++ windows
有問題的code: (請善用置底文標色功能)
HWND hEdit;
HDC hdc;
HBRUSH hBrushEdit;
hEdit = CreateWindow ("edit", "", WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL
, 0,0, 100, 200, hWnd, NULL,
g_pApplication->GetAppInstance(), NULL);
hBrushEdit = CreateSolidBrush(RGB(100, 100, 100));
hdc = GetDC(hEdit);
SetBkColor(hdc, RGB(100, 100, 100));
補充說明:
我有試過在WM_CTLCOLOREDIT裡用
case WM_CTLCOLOREDIT:
{
if(((HWND)lParam == hEdit)
{
SetBkColor ((HDC)wParam, RGB (100, 100, 100));
return (LRESULT)hBrushEdit;
}
}
這樣就可以改變顏色。
case WM_CTLCOLOREDIT:
{
if(((HWND)lParam == hEdit)
{
HDC hdc = GetDC(hEdit);
SetBkColor (hdc, RGB (100, 100, 100));
return (LRESULT)hBrushEdit;
}
}
但這樣做就沒辦法改變顏色。
我有找過一些資料,我發現
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint( hWnd , &ps );
(這個hdc的位置跟 WM_CTLCOLOREDIT 裡的(HDC)wParam 會是一樣的)
EndPaint( hWnd , &ps );
return 0;
想請教一下,如何不處理WM_CTLCOLOREDIT就能達到修改edit control的顏色
還有要如何在WM_PAINT之外抓無效區域的hdc呢??
(書上說 PAINTSTRUCT 裡的hdc就是指無效區域)
麻煩各位了^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.3.221
※ 編輯: lovecold 來自: 114.33.3.221 (06/12 02:34)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.3.221
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章