2013-05-13 20 views
1

這是msdn創建工具欄的示例代碼,但本例使用系統的標準圖像。
我需要更改此代碼以使用資源文件中的圖像,例如:IDB_COPY BITMAP "copy.bmp"IDB_CUT BITMAP "cut.bmp"IDB_PASTE BITMAP "paste.bmp"用我的位圖圖像創建工具欄

HIMAGELIST g_hImageList = NULL; 

HWND CreateSimpleToolbar(HWND hWndParent) 
{ 
    // Declare and initialize local constants. 
    const int ImageListID = 0; 
    const int numButtons  = 3; 
    const int bitmapSize  = 16; 

    const DWORD buttonStyles = BTNS_AUTOSIZE; 

    // Create the toolbar. 
    HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, 
            WS_CHILD | TBSTYLE_WRAPABLE, 0, 0, 0, 0, 
            hWndParent, NULL, g_hInst, NULL); 

    if (hWndToolbar == NULL) 
     return NULL; 

    // Create the image list. 
    g_hImageList = ImageList_Create(bitmapSize, bitmapSize, // Dimensions of individual bitmaps. 
           ILC_COLOR16 | ILC_MASK, // Ensures transparent background. 
           numButtons, 0); 

    // Set the image list. 
    SendMessage(hWndToolbar, TB_SETIMAGELIST, 
      (WPARAM)ImageListID, 
      (LPARAM)g_hImageList); 

    // Load the button images. 
    SendMessage(hWndToolbar, TB_LOADIMAGES, 
      (WPARAM)IDB_STD_SMALL_COLOR, 
      (LPARAM)HINST_COMMCTRL); 

    // Initialize button info. 
    // IDM_NEW, IDM_OPEN, and IDM_SAVE are application-defined command constants. 

    TBBUTTON tbButtons[numButtons] = 
    { 
     { MAKELONG(STD_FILENEW, ImageListID), IDM_NEW, TBSTATE_ENABLED, buttonStyles, {0}, 0, (INT_PTR)L"New" }, 
     { MAKELONG(STD_FILEOPEN, ImageListID), IDM_OPEN, TBSTATE_ENABLED, buttonStyles, {0}, 0, (INT_PTR)L"Open"}, 
     { MAKELONG(STD_FILESAVE, ImageListID), IDM_SAVE, 0,    buttonStyles, {0}, 0, (INT_PTR)L"Save"} 
    }; 

    // Add buttons. 
    SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); 
    SendMessage(hWndToolbar, TB_ADDBUTTONS,  (WPARAM)numButtons,  (LPARAM)&tbButtons); 

    // Resize the toolbar, and then show it. 
    SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0); 
    ShowWindow(hWndToolbar, TRUE); 

    return hWndToolbar; 
} 

回答

0

我發現這個解決方案:

const int ID_TB_STANDARD = 0; 

const int ID_IL_STANDARD = 0; 

HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, 
      WS_CHILD | TBSTYLE_TOOLTIPS, 0, 0, 0, 0, hWnd, (HMENU)ID_TB_STANDARD, hInstance, NULL); 

HIMAGELIST hImageList = ImageList_LoadBitmap(hInstance, MAKEINTRESOURCEW(IDB_CUT), 16, 0, RGB(255, 0, 255)); 
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_COPY)), NULL); 
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_PASTE)), NULL); 

SendMessage(hWndToolbar, TB_SETIMAGELIST, (WPARAM)ID_IL_STANDARD, (LPARAM)hImageList); 
SendMessage(hWndToolbar, (UINT) TB_SETHOTIMAGELIST, 0, (LPARAM)hHotImageList); 
SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); 

TBBUTTON tbb[3] = 
{ 
    {0,ID_CUT,TBSTATE_ENABLED,TBSTYLE_BUTTON}, 
    {1,ID_COPY,TBSTATE_ENABLED,TBSTYLE_BUTTON}, 
    {2,ID_PASTE,TBSTATE_ENABLED,TBSTYLE_BUTTON}, 
}; 



SendMessage(hWndToolbar, (UINT) TB_ADDBUTTONS, 3, (LPARAM)&tbb); 

SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0); 
ShowWindow(hWndToolbar , SW_SHOW);