• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Button(コントロール)を半透明化する方法)

Button(コントロール)を半透明化する方法

このQ&Aのポイント
  • ボタンの透明化方法についてご質問です。
  • ボタンの作成後にSetLayeredWindowAttributes関数を使用して透明化を試みましたが、うまく50%の透明化ができませんでした。
  • 調査したところ、子ウィンドウ(ボタン)には透明化を設定することができないという情報を得ました。

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

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

 こんばんは。  hStaticB = CreateWindowEx(WS_EX_LAYERED, "BUTTON", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 0, 0, CONTROLSIZE_X, CONTROLSIZE_Y, hDlg, (HMENU)ID_BUTTON, hInst, NULL);  SetLayeredWindowAttributes(hStaticB, 0, 127, LWA_ALPHA);  で出来ませんか。

ringist
質問者

お礼

回答ありがとうございます。 hStaticB = CreateWindowEx(WS_EX_LAYERED, "BUTTON", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 0, 0, CONTROLSIZE_X, CONTROLSIZE_Y, hDlg, (HMENU)ID_BUTTON, hInst, NULL);  SetLayeredWindowAttributes(hStaticB, 0, 127, LWA_ALPHA); とすると、ボタン自体が作成されず?に表示されないです。 うーん やっぱり子Windowを透明化させるのは無理なのかな。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

 こんばんは。御礼頂きました。  先程、実際に試して見ましたが、レイヤード指定してボタンを作成した所、失敗しました。親ウィンドウ(実験台はダイアログ)にレイヤード指定した所、ダイアログが見事に半透明になったので、単品のコントロールにレイヤード指定する事は出来ない見たいです。

ringist
質問者

お礼

こんばんは やはりできないみたいですね。。 C#を駆使すればできるかもしれないけれど、、 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

  • 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にしたら問題なのでしょうか。

  • CreateWindowEx のウィンドウスタイルが反映されないのですが・・・

    CreateWindowEx のウィンドウスタイルが反映されないのですが・・・ VC++6.0 の SDK にて、ウィンドウを表示するプログラムを作成中なのですが、 スタイルが思うように反映されません。なぜなのでしょうか。 hList = CreateWindowEx( 0,      WC_LISTVIEW, "",       WS_CHILD | WS_VISIBLE |//猫でもわかる ~ によるうとデフォルトで必要らしい      WS_EX_CLIENTEDGE |   // 縁が沈んで見える境界線を持ちます。→ 持ちません      WS_EX_ACCEPTFILES |  // ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク      WS_EX_RIGHTSCROLLBAR | // 右スクロールバーが出るはずなのに・・・      LVS_REPORT,       // カラムのタイトル      0, 0, 0, 0,      hWnd,      (HMENU)LISTVW_HI_1,      hInst,      NULL);

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

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

  • ダイアログボックスのボタンコントロールのフォーカスについて

    ダイアログボックスのボタンコントロールのフォーカスについて 教えて下さい。  モーダルダイアログにボタン「OK」を一つ貼り付けて それを「標準のボタン」(BS_DEFPUSHBUTTON)として作成したのですが ダイアログ表示直後は下画像(1)のようになってエンターキーを押しても 反応しません。何度かカーソルキーを押すとようやく(2)のように ボタンに枠線がついてエンターで押せるようになるのですが ダイアログ表示直後に(2)のようにするにはどうするべきでしょうか? ダイアログのコールバック・プロシージャ(WM_INITDIALOG部分でボタン作成) LRESULT CALLBACK SettingWndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){ switch (msg){ case WM_INITDIALOG: CreateWindowEx(0x00000000,"BUTTON","OK", WS_CHILD |WS_VISIBLE| WS_TABSTOP | BS_DEFPUSHBUTTON, 16,16,80,21,hWnd,(HMENU)IDOK,GetModuleHandle(0),0); return TRUE; } return FALSE; }

  • 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度使ったハンドルをウィンドを破棄した後使えるようにするにはどうしたらいいのでしょうか?

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

    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;  } }

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

     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 の あいう の文字の 背景色が白です。 その白の部分を赤にするソースを教えてください。

  • 次のようにEditを作成し

    hE=CreateWindow ("EDIT",NULL,WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|WS_VSCROLL|WS_BORDER,0,0,0,0,hWmain,HMENU(IDE),hInst,NULL); 使っていますが SetWindowTextでhEの大容量の文字列を送ったのですが 表示させているエディット画面の下に表示画面一行目が最初から何行目にあるか表示させようと思っています どんなメッセージをそれを送れば取得できるでしょうか? 例えばListでいえば i=(int)SendMessage(hL,LB_GETTOPINDEX,0,0); のようなものを知りたいのです

  • ツールバーについて教えてください。

    ツールバーについて教えてください。 ツールバーを普通にウィンドウの上の所に表示はうまくいくのですが、 左や右側に表示するとうまくいきません。 うまくいかないとは表示されたツールバーの右側に余分なスペースみたいなものが出来ているのです。 なにが原因で起きているのかわかりません。 どなたか教えてください。 以下に関係がありそうなところを載せます。 ================================================ TBBUTTON tbb[] = { {0, IDM_BUTTON1, TBSTATE_WRAP | TBSTATE_ENABLED | TBSTATE_CHECKED, BTNS_CHECK | BTNS_GROUP}, {1, IDM_BUTTON2, TBSTATE_WRAP | TBSTATE_ENABLED, BTNS_CHECK | BTNS_GROUP}, }; ================================================ hTool = CreateWindow(TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | CCS_LEFT | TBSTYLE_LIST, 0, 0, 0, 0, hWnd, (HMENU)ID_TOOLBAR, hInst, NULL);