• 締切済み

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

ツールバーについて教えてください。 ツールバーを普通にウィンドウの上の所に表示はうまくいくのですが、 左や右側に表示するとうまくいきません。 うまくいかないとは表示されたツールバーの右側に余分なスペースみたいなものが出来ているのです。 なにが原因で起きているのかわかりません。 どなたか教えてください。 以下に関係がありそうなところを載せます。 ================================================ 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);

みんなの回答

  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

ドロップダウンボタンをツールバーに加えているとそんな状況に なりますけど、そうではないのでしょうか。

Missing0001
質問者

補足

ドロップダウンボタンとは、 BTNS_DROPDOWNのことでしょうか? それならつけた覚えがないのですが・・・

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

関連するQ&A

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

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

  • ツールバーにうまく文字が付けられません

    いつもお世話になっています。よろしくお願いします。 色々調べて、自分なりに改良したのですが、原因がつかめません。 アドバイス、ヒントをお願いします。 ツールバーの『windows標準のボタン』に、『文字を付ける』部分で躓いています。   //ツールバー作成関数 HWND MyCreateToolbar(HWND hWnd) { HINSTANCE hInst; HWND hTool; TBADDBITMAP tb; int stdid; hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); hTool = CreateToolbarEx( hWnd, WS_CHILD | WS_VISIBLE, ID_TOOLBAR, // コントロールID 0, hInst, NULL, tbb, 0, 0, 0, 0, 0, sizeof(TBBUTTON)); tb.hInst = HINST_COMMCTRL; tb.nID = IDB_STD_SMALL_COLOR; stdid = SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tb); tbb[0].iBitmap += stdid; tbb[1].iBitmap += stdid; tbb[2].iBitmap += stdid; SendMessage(hTool, TB_ADDBUTTONS, (WPARAM)3, (LPARAM)&tbb[0]); tb.hInst = HINST_COMMCTRL; tb.nID = IDB_VIEW_SMALL_COLOR; stdid = SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tb); tbb[3].iBitmap += stdid; SendMessage(hTool, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&tbb[3]); } //ここでくくると、『ボタンに文字を付ける関数』が機能しない //『}』 を、『ボタンに文字を付ける関数』の最後につけると、文字が表示されるが、エラーが出る。 //エラー E2108 c:\ツールバー\toolbar\toolbar.cpp 201: typedef 'HWND' の使い方が間違っている(関数 MyCreateToolbar(HWND__ *) ) エラー E2379 c:\ツールバー\toolbar\toolbar.cpp 201: ステートメントにセミコロン(;)がない(関数 MyCreateToolbar(HWND__ *) ) *** 2 errors in Compile *** /ボタンに文字を付ける関数 HWND MyCreateToolbar(HWND hWnd); //;セミコロンをつけないと //HWNDの使い方が間違っている ステートメントにセミコロンが無い の エラー { HINSTANCE hInst; HWND hTool; TCHAR szBuf[16]; int iNEW; int iOPEN; int iPARENT; int iDELETE; TBADDBITMAP tbab; InitCommonControls(); hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); hTool = CreateWindow(TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, (HMENU)ID_TOOLBAR, hInst, NULL); SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); tbab.hInst = HINST_COMMCTRL; //既成はCOMMCTRL 自作ビットマップはNULL tbab.nID = IDB_STD_SMALL_COLOR; ID_TOOLBAR; SendMessage(hTool, TB_ADDBITMAP, (WPARAM)0, (LPARAM)&tbab); LoadString (hInst, IDS_NEW, szBuf, (TCHAR)sizeof(szBuf)); iNEW = SendMessage(hTool, TB_ADDSTRING, 0, (LPARAM)szBuf); tbb[0].iString = iNEW; LoadString (hInst, IDS_OPEN, szBuf, (TCHAR)sizeof(szBuf)); iOPEN = SendMessage(hTool, TB_ADDSTRING, 0, (LPARAM)szBuf); tbb[1].iString = iOPEN; LoadString (hInst, IDS_DELETE, szBuf, (TCHAR)sizeof(szBuf)); iDELETE = SendMessage(hTool, TB_ADDSTRING,0, (LPARAM)szBuf); tbb[2].iString = iDELETE; LoadString (hInst, IDS_PARENT, szBuf, (TCHAR)sizeof(szBuf)); iDELETE = SendMessage(hTool, TB_ADDSTRING, 0, (LPARAM)szBuf); tbb[3].iString = iPARENT; SendMessage(hTool, TB_ADDBUTTONS, (WPARAM)3, (LPARAM)(LPTBBUTTON)&tbb[0]); return hTool; } } ツールバー作成関数を 『}』で閉じると 文字を付ける関数が機能せず、標準のボタンが4つ表示されます。 『}』 を『文字を付けるをつける関数』の最後に付けると文字が表示されるが、『ツールバー作成関数』の所で閉じていないので、エラーが出ます。 『}』 を『文字を付けるをつける関数』の最後に付けると ボタン二つ分の大きさの『文字だけのボタンが最初に表示されたボタン4つを隠して3種類だけ表示されます。(新規作成、開く、削除) このとき、新規作成などの文字の上の部分をクリックすると、隠れていたボタンが出てきます。 その出てきたボタンもクリックできます。文字をクリックすると、ボタンは、隠れてしまいます。 VC++で『文字を付けるをつける関数』は、エラー、警告が出て作れません。

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

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

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

    //ボタン hStaticB = CreateWindowEx(0, "BUTTON", "", WS_CHILD | WS_VISIBLE | WS_BORDER|WS_EX_TRANSPARENT, 0,0,CONTROLSIZE_X,CONTROLSIZE_Y,hDlg, (HMENU)ID_BUTTON, hInst, NULL); でボタンを作った後に SetLayeredWindowAttributes(hStaticB,0,50,LWA_ALPHA); をするのですが 透過率50%になりません。 どうしたら半透明のボタンを作れるでしょうか? 自分で調べた結果、子Window(ここではボタン)には、透過率を 設定できない という情報を見たのですが・・。 よろしくおねがいします。 画像は、(0,0)に細長いボタンを張り付けた図でこのボタンを 半透明化させたいのです。

  • CreateWindowでSTATICコントロールを使ってBITMAP表示する。

    WIN32、VC++2005にて開発中です。 CreateWindowでSTATICコントロールを使ってBITMAPを表示する方法が分からなくて困ってます。 ウィンドウプロシージャのWM_CREATEで、 下記の様に書いてみたんですがダメでした。 CreateWindowW(L"Static", L"***", WS_VISIBLE|WS_CHILD|SS_BITMAP,120, 3, 100, 45, hWnd, HMENU(-1), NULL, NULL); ビットマップはIDB_BITMAP1という名前で追加してリソースビューで確認しました。 CreateWindowで表示させたいんですがいい方法ありますか? 初心者でアホなんでなるべく解り易くお願いします。

  • ボタンのアイコン表示

    開発環境: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); }

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

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

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

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

  • 次のように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); のようなものを知りたいのです

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

このQ&Aのポイント
  • 一般普通公差について JIS B 0405などについてご教授ください。普通公差は除去加工が主な対象としており、圧造部品では同じような公差が見つからないことがあります。図面が切削を想定して製図されている場合でも、冷間圧造でつくる場合には顧客と相談して公差を決める必要があります。
  • 一般普通公差についての質問です。JIS B 0405などに基づいて普通公差を適用することが一般的ですが、圧造部品では同じような公差が見つからないことがあります。図面が切削を想定して製図されている場合でも、冷間圧造でつくる場合には顧客と相談して公差を決める必要があります。
  • JIS B 0405を基にした一般普通公差についての質問です。普通公差は除去加工が主な対象であるため、圧造部品では同じような公差が見つからないことがあります。図面が切削を想定して製図されている場合でも、冷間圧造でつくる場合には顧客と相談して公差を決める必要があります。
回答を見る