WindowsXP、VC2005にてプログラムを作成しております。
CreateWindowでSTATICのWindowを作成したのですが、
ウィンドウの色(背景?)とテキストの色の変更が出来ません。
同じCreateWindowで作成したプッシュボタン(BUTTON)につきましては、
SetSysColorsを使い、COLOR_BTNTEXTとCOLOR_BTNFACEでそれぞれボタンの背景と文字の
色を変更出来ました。
SetSysColors以外でも、CreateWindowした際に戻り値で受け取れるウィンドウハンドルを
使ってHDCを取得し、SetTextColorをしてみたのですが、反映されません。
<コード>
HWND hWnd = CreateWindow(_T(STATIC), _T(test),
WS_CHILD | WS_VISIBLE | SS_LEFT,
0,0,100,100,
hWnd,
(HMENU)1,
g_hInst,NULL);
HDC hDC = GetDC(hWnd);
SetWindowText(hDC, RGB(255,0,0));
と、いう感じです。
SetSysColorでは、
COLOR_DESKTOP
COLOR_CAPTIONTEXT
COLOR_WINDOWTEXT
COLOR_WINDOW
COLOR_HIGHLIGHTTEXT
を試してみましたが、背景、文字色ともに変わりない状態でした。
上記以外に方法をご存じないでしょうか?
また、上記で修正箇所がございましたら教えていただけないでしょうか?
よろしくお願いいたします。
追加です。
記述ミスがありました。
×SetWindowText(hDC, RGB(255,0,0));
○SetTextColor(hDC, RGB(255,0,0));
です。
また、上記以外の方法として、
CreateWindowで取得したウィンドウハンドルを使って
SelectObjectでフォントを指定してみたのですが、それも反映されませんでした。
追加です。
CreateWindowで作成する際に、EDITで作成し、ユーザーに触られたくはないので、
ReadOnlyとなるようにウィンドウスタイルに「ES_READONLY 」を指定してみたのですが、
自動でグレーアウトしてしまうようで、実現できませんでした。
ご回答がいただけてない状況ですが、どなたかが辿りついた時のために記載しておきます。
連投失礼いたしました。
「staticコントロール 背景色」とかで検索したら出てきませんかね?
http://www.nitoyon.com/vc/reference/gui/static.htm#content_1_9
こちらのページはダイアログの場合ですが。
まぁ、やることは一緒です。
>CreateWindowで取得したウィンドウハンドルを使って
>SelectObjectでフォントを指定してみたのですが、それも反映されませんでした。
そのフォントの寿命は大丈夫ですか?
>ReadOnlyとなるようにウィンドウスタイルに「ES_READONLY 」を指定してみたのですが、
>自動でグレーアウトしてしまうようで、実現できませんでした。
EDITコントロールは…
ReadOnly付けないとWM_CTLCOLOREDITで、ReadOnly付けるとWM_CTLCOLORSTATICで……だった
と記憶してますが……。
とりあえず…
WndProcに下記追加で背景色は変更されてます。
# まぁ、このコードだとプログラム実行中にデスクトップの色を変更した場合に追従でき
ませんが…まぁ本題ではないですかね。
# あと、hBrushの開放端折ってます。
static HWND hStatic;
static HBRUSH hBrush = NULL;
case WM_CREATE:
hStatic = CreateWindow(_T(STATIC), _T(test), WS_CHILD | WS_VISIBLE |
SS_LEFT, 0,0,100,100, hWnd, (HMENU)1, hInst, NULL);
break;
case WM_CTLCOLORSTATIC:
if((HWND)lParam == hStatic) {
if(hBrush == NULL) {
hBrush = CreateSolidBrush(GetSysColor(COLOR_DESKTOP));
}
return (LRESULT)hBrush;
}
break;
ご回答いただきありがとうございました。
返信遅くなり失礼いたしました。