看板 C_and_CPP 關於我們 聯絡資訊
( *[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) lovecold:轉錄至看板 GameDesign 06/12 02:48