2011-10-07 79 views
2

我想在C++中使用Win32 API(無MFC或VC++)創建工具欄。我能夠創建一個看起來像這樣的工具欄,沒有背景,只是基本的窗口顏色。灰色背景工具欄C++

enter image description here

我想它看起來像下面的圖片與光澤酒吧和灰色gradiant

enter image description here

我一直在使用TBSTYLE_FLAT當我得到了一個未定義的錯誤嘗試,我宣佈它等於0x0800,這仍然沒有任何區別。我是否需要添加更多屬性?我將在下面粘貼我的代碼。

HWND hTbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)12, GetModuleHandle(NULL), NULL); 
     SendMessage(hTbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); 

     TBBUTTON tb[5]; 
     TBADDBITMAP tBmp; 

     tBmp.hInst = HINST_COMMCTRL; 
     tBmp.nID = IDB_STD_SMALL_COLOR; 
     SendMessage(hTbar, TB_ADDBITMAP, 0, (LPARAM)&tBmp); 
     ZeroMemory(tb, sizeof(tb)); 

     tb[0].iBitmap = STD_FILEOPEN; 
     tb[0].fsState = TBSTATE_ENABLED; 
     tb[0].fsStyle = TBSTYLE_BUTTON; 

     SendMessage(hTbar, TB_ADDBUTTONS, sizeof(tb)/sizeof(TBBUTTON), (LPARAM)&tb); 

我正在使用Windows 7和Win32 C++ API。謝謝。

+0

您的應用程序是否具有[公共控件清單](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx)? – Luke

+0

是的。我的應用程序上有類似閃亮的Windows-7按鈕。 – llk

+0

使用Spy ++查看它設置了什麼樣式;我想這也可能是自定義繪製的。或者它可能是主題數據的一部分。 – Luke

回答

0

背景可能來自父窗口。要免費獲得視覺樣式背景漸變效果,請將工具欄放在rebar內,並使用TBSTYLE_FLAT和TBSTYLE_TRANSPARENT工具欄樣式。

+0

我正在使用'WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TRANSPARENT | TBSTYLE_FLAT'作爲工具欄的屬性。我得到了'TBSTYLE_FLAT未在此範圍內聲明。「對於TBSTYLE_ TRANSPARENT也是如此。 – llk

+0

@coolcoder:在繼續之前,您可能需要修復您的標題,如果沒有正確的標題文件,您將無法編碼... – Anders

+0

我應該添加什麼標題?我包括'commctrl.h windows.h' – llk