[問題] 如何改變edit control背景顏色及文字顏色

看板GameDesign (遊戲設計)作者 (小豬頭)時間15年前 (2010/06/12 02:48), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 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
文章代碼(AID): #1C4eK7AH (GameDesign)
文章代碼(AID): #1C4eK7AH (GameDesign)