• ベストアンサー

チェックボックスのテキストを背景に透過させるには?

VC++6.0です。 hCheckWnd = CreateWindow("BUTTON","checkbox", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 0,0,100,50, hWnd,NULL,hInst,NULL); で作成したチェックボックスのテキストが背景色から浮いてしまい困っています。 背景色に透過させるか色を指定して背景色と同色にするか出来ればいいのですが方法がわからずにいます。 宜しくお願いします。

  • aakey
  • お礼率46% (14/30)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

WM_CTLCOLORDLG: WM_CTLCOLORSTATIC: などのメッセージで、 関数 SetBkMode(hDC, TRANSPARENT); // 背景を透過 及び HBRUSH hbkgnd = NULL;として、 if( !hbkgnd){ LOGBRUSH lb; lb.lbStyle = BS_SOLID ; lb.lbColor = RGB( 111, 111, 111 ); hbkgnd = CreateBrushIndirect( &lb ); } //if( !hbkgnd) return( ( LRESULT ) hbkgnd ); チェックボックスのテキスト部分を透過処理できるとおもいます。 細かいことは以下参考、 http://www17.plala.or.jp/page-zero/programming-w.html

aakey
質問者

お礼

解決いたしました。 リンクも大変参考になりました。 ありがとうございます!!

その他の回答 (1)

noname#20941
noname#20941
回答No.1

VCを使ったことがないのでわからないのですが、以下のページがご参考にならないでしょうか。見当はずれかバージョン違いなどでしたら申し訳ありません。

参考URL:
http://forums.belution.com/ja/vc/000/209/78.shtml
aakey
質問者

お礼

いえいえ、とても参考になりました。 そちらのページで同じような質問を探してはいたのですが見落としていたようです。 ありがとうございます!

関連するQ&A

  • チェックボックスの周囲の色が

    灰色になって困っています。 なおチェックボックスは hC0=CreateWindow(TEXT("BUTTON"),TEXT("Check"),WS_CHILD|WS_VISIBLE|BS_CHECKBOX|BS_AUTOCHECKBOX,0,0,0,0,hWmain,NULL,hI,NULL); によって作りました。 スタイルを変えるなりメッセージをセンドするなりして白くできるのでしょうか?

  • CreateWindow で作ったウィンドウが白いんですが

    VC++ 6.0 で CreateWindow で作ったウィンドウが 白いんですが、これを、メッセージボックスと同じ色(鉛色?)にするにはどうしたらいんでしょうか。 あるいは、その逆、チェックボックス等に付属するテキスト文字の背景を白くできればそれでもかまいません。 (デフォルトで灰色なので)                  ↓ CreateWindow("BUTTON", "このテキスト背景が灰色",        WS_CHILD | WS_VISIBLE |        BS_AUTOCHECKBOX,        Window_Width,        Window_Height,        NULL,        NULL,        hWnd,        NULL);

  • ボタンの文字の大きさを変更したい

    CreateWindow によるボタンを作成してみたのですが、 ボタンラベルとして貼る以下の "明朝" という文字の大きさを 変えるにはどうすればいいのでしょうか。 hButtonWnd1 = CreateWindow("BUTTON", "明朝",               S_CHILD | WS_VISIBLE | BS_PUSHBUTTON,               20, 20, 100, 30,               hWnd,               (HMENU)ID_MI,               hInst,               NULL);

  • コントロール内の文字の背景色

     hSWnd = CreateWindow("STATIC","あいう",WS_CHILD | WS_VISIBLE,               0,0,320,240,hWnd,NULL,hInst,NULL); に対して、  case WM_CTLCOLORSTATIC:      hBrush = CreateSolidBrush(RGB(0, 255, 0));      return (LRESULT)hBrush;  break; とすると、hSWnd は緑になるけど、hSWnd の あいう の文字の 背景色が白です。 その白の部分を赤にするソースを教えてください。

  • テキストボックスからフォーカス外す

     editBox = CreateWindow(   "EDIT",   "あああ",   SS_CENTER | WS_CHILD | WS_VISIBLE,   0,0,100,20,   hWnd,   NULL,   hInstance,   NULL); テキストボックスのフォーカスを外すにはどうしたら いいんですか? ESCキーでフォーカスを外そうと思ったら、 テキストボックスにフォーカスがあるせいで case WM_KEYDOWN が動作しません。 フォーカスを外すというソース自体も分かっていません。  case WM_KEYDOWN:   if( wParam == VK_ESCAPE )    ?  break;

  • ListBoxコントロール

    hLB1=CreateWindow ("LISTBOX","",WS_CHILD|WS_VISIBLE|LBS_STANDARD, 0,0,300,150,hwnd,(HMENU)1,cs->hInstance,NULL); hLB2=CreateWindow ("LISTBOX","",WS_CHILD|WS_VISIBLE|LBS_STANDARD, 0,160,300,150,hwnd,(HMENU)2,cs->hInstance,NULL); という風に2つのListBoxコントロールを作っているサンプルを見たのですが (HMENU)1と(HMENU)2のところをともにNULLにしたら問題なのでしょうか。

  • エディットボックス内でキー押されたときのメッセージ

    VC++6.0です。 メインウインドウ内のエディットボックス(一行)で、特定のキー入力を検知したいのですが、どのようにすればよいでしょうか。 mfcは使ってません。 //ウインドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {  switch( message )  {   case WM_CREATE:    //エディットボックスを作成    CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT","",          WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,          0,0,2000, 20, hWnd, (HMENU)IDC_EDIT, g_hInst, NULL );    break;   case WM_COMMAND:    //エディットボックス内の変更はEN_CHANGEで受け取れるが、    //キーコードは送られてこない    break;  } }

  • Windowハンドルを再利用できない

    hPushBox=CreateWindow("BUTTON","a",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,0,0,0,0,hW,HMENU(0), ((LPCREATESTRUCT)lP)->hInstance,NULL);DestroyWindow(hPushBox); hPushBox=CreateWindow("BUTTON","a",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,0,0,0,0,hW,HMENU(0), ((LPCREATESTRUCT)lP)->hInstance,NULL);DestroyWindow(hPushBox); Window処理関数で上記のようにするとコンパイルは通るのに実行がエラーになります 1度使ったハンドルをウィンドを破棄した後使えるようにするにはどうしたらいいのでしょうか?

  • ボタンのアイコン表示

    開発環境:Vista Visual Studio2012 C言語 CreateWindowで作成したボタンを、アイコン表示にしたいのですけれど上手くいきません。 どこが悪いのでしょうか? HWND CreatePushButton(HWND hwnd, int x, int y, int w, int h, LPCTSTR caption, int id) {     return CreateWindow(         _T("BUTTON"),         caption,         WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_ICON ;         x, y,         w, h,         hwnd,         (HMENU)(INT_PTR)id,         G_hInst,         NULL         ); } LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {    static HWND     hButton;    static HICON     m_hIcon;    switch (uMsg) {      case WM_CREATE: //ウィンドウが作られたとき         hButtonREC = CreatePushButton( hwnd,                               20, 20,                               80, 40,                                _T("テスト"),                               ID_BUTTON  );         m_hIcon = LoadIcon( NULL , IDI_ERROR );         SendDlgItemMessage( hButtonREC,                       ID_BUTTON_RCE,                       BM_SETIMAGE,                       IMAGE_ICON,                       (LPARAM)m_hIcon); }

  • c++ で web browser

    windows 7 32 vs c++ 2010 で web browser を作成しようとして躓いています windows xp 32 vs c++ 2010 で動いた 下記コードを 7 で実行すると CreateWindow されません。 ie_hWnd = CreateWindow("AtlAxWin", "Shell.Explorer.2", WS_CHILD | WS_VISIBLE, 0, 0, 500, 500, main_hWnd, NULL, GetModuleHandle(NULL), NULL); 何をどう変えれば 7 でも動くようになりますか? よろしくお願いします。

専門家に質問してみよう