建立菜單條 翻譯:tellmenow
要建立菜單條,可以調用BOOL SHCreateMenuBar (SHMENUBARINFO *pmb);函數中唯一的參數是一個SHMENUBARINFO結構的的地址,該結構定義如下:
typedef struct tagSHMENUBARINFO {
DWORD cbSize;
HWND hwndParent;
DWORD dwFlags;
UINT nToolBarId;
HINSTANCE hInstRes;
int nBmpId;
int cBmpImages;
HWND hwndMB;
COLORREF clrBk;
}SHMENUBARINFO;
必須使用SHMENUBARINFO結構的尺寸來設定cbSize域。hwndParent設定為建立菜單條的視窗控制代碼。dwFlags則設定成三個標誌的組合:
SHCMBF_EMPTYBAR 用來建立沒有菜單的菜單條
SHCMBF_HIDDEN 建立一個菜單條,初始狀態為隱藏
SHCMBF_HIDESIPBUTTON 建立一個菜單,其右邊沒有SIP按鈕
SHCMBF_COLORBK 指出clrBk域中包含有效顏色,在填充菜單條背景時使用。
SHCMBF_HMENU 指出資源是菜單資源,而不是菜單條資源
除非指定了SHCMBF_EMPTYBAR標誌,否則你必須將nToolBarId網域設定成描述菜單條中菜單和按鈕結構的資源。除非使用了SHCMBF_HMENU標誌,否則該資源並不是簡單的菜單資源。該資源是一個普通資源資料快和菜單資源的組合,用來一起描述菜單條上的菜單以及按鈕位置。我將在本節後面描述該資源。
接下來是hInstRes域,應該設定成包含菜單條資源的模組的執行個體控制代碼。隨後的兩個域,nBmpId和cBmpImages,描述了用於定義菜單條上按鈕外觀的位元影像圖片。如果菜單條上有圖形按鈕,則可以將nBmpId設定成位元影像資源ID。該位元影像應該是16像素高,位元影像中的每個圖片應該是16像素寬。所以如果位元影像中有三個圖片,那麼位元影像應該是48像素寬,16像素高。cBmpImages網域設定成位元影像中圖片的數量。為了更有藝術性,請參考最新的應用程式指導,看看如何將位元影像同其它部分搭配的更恰當。
如果菜單條建立成功,SHCReateMenuBar函數返回TRUE,這時候,hwndMB域中將包含菜單條控制代碼。您需要儲存這個視窗控制代碼,因為一旦建立完成後,就沒有其它方式可以確定菜單條控制代碼了。