忍者ブログ
AMAZON
フリーエリア
最新コメント
最新トラックバック
広告
インテル製チップセットを搭載し、基本機能の充実、メンテナンス性も向上した高性能なクライアントPC Endeavor AT971 HP Directplus オンラインストア
42 41 40 39 38 37 36 35 34 33 32 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

投稿者 : かおん [編集]
LRESULT CALLBACK WndLayerProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    static HFONT            hFont = NULL;
    static HBRUSH            hEditBackBrush;
    switch (message)
    {
    case WM_LBUTTONDOWN:
        break;
    case WM_INITDIALOG:
        hEditBackBrush = CreateSolidBrush( RGB(0x00,0x00,0x00 ) );
        hFont = CreateFont( 18 , 0 , 0 , 0 , FW_BOLD , FALSE , FALSE , FALSE , SHIFTJIS_CHARSET , OUT_DEFAULT_PRECIS , CLIP_DEFAULT_PRECIS ,ANTIALIASED_QUALITY , DEFAULT_PITCH | FF_DONTCARE , _TEXT("MS Pゴシック") );
        SendMessage( (HWND)GetDlgItem(hWnd, IDC_CHECK_SAMPLE ), WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
        return (INT_PTR)TRUE;
    case WM_CTLCOLORSTATIC:
        hdc = (HDC)wParam;
        SetBkMode(hdc, TRANSPARENT);
        SetTextColor(hdc,RGB(0xFF,0x00,0x00));//文字の色
        SetBkColor(hdc, RGB( 0x00,0x00, 0x00 ));
        return (LRESULT)(HBRUSH)hEditBackBrush;
    case WM_DESTROY:
        if( hFont != NULL ) DeleteObject( hFont );
        if( hEditBackBrush != NULL ) DeleteObject( hEditBackBrush );
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
      return (INT_PTR)FALSE;
}


上記ソースは、チェックボックスの文字色と背景色を変更するソースです。

しかし・・文字色が黒から変わらない!!
あたらしく、プロジェクトを作成して、同じ事をやるとちゃんと色が変わる
正直、この問題は、数年悩んでおりましたが、今日解決したのでアップしておきます。

もし、同じ問題に遭遇した人、「xpstyle.manifest」これに覚えがある人いますよね。そう!犯人は、「ComCtl32.lib」こいつだったわけだ
こいつを使用すると、指定するバージョンのComCtlが使われるわけだが、その指定している
コントロールでは、チェックボックスの文字色が変えられないのである

xpstyle.manifestを使用するのをやめるか、ownerdrawで書き込むか2択を迫られる
もうひとつ、文字色を変えるのをやめるという手もありますので3択ですね。

たしかに xpstyle.manifestでは、xpのスタイルでデザインしているので何でもかんでも
変更できたら、スタイルの意味がなくなるのでしょうがないのですが・・・・



PR
投稿者 : かおん [編集]

COMMENT

ADD YOUR COMMENT

NAME
TITLE
MAIL
URL
COMMENT
PASS

TRACKBACK

TRACKBACK URL