2009-12-24 6 views
0

J'ai une boîte de dialogue sur laquelle les contrôles sont ajoutés avec l'éditeur de ressources. Mais j'essaye de créer une barre d'outils à la volée dans le message WM_INITGDIALOG mais la barre d'outils n'est pas visible. Y at-il autre chose à faire pour le rendre visible (je ne pense pas mais ...). Si ce n'est pas possible, comment ajouter une barre d'outils dans l'éditeur de ressources.Boîte de dialogue Ajouter une barre d'outils avec l'API Win32

Comme vous l'aurez deviné-je utiliser VS 2008.

CreateButtons(HWND hwnd) 
{ 
    HIMAGELIST m_hTBImageList; 
    HIMAGELIST m_hTBHottrack; 



    HWND hwndSysButtonTB = CreateWindowEx(0, 
     TOOLBARCLASSNAME, 
     _T(""), 
     WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | CCS_NORESIZE | CCS_NOPARENTALIGN, 
     toolbarRect.left, toolbarRect.top, toolbarRect.right-toolbarRect.left, toolbarRect.bottom-toolbarRect.top, 
     hwnd, 
     (HMENU)IDR_TOOLBAR, 
     (HINSTANCE)hAppInstance, 
     NULL); 

    m_hTBImageList = ImageList_LoadImage((HINSTANCE)hAppInstance, 
     MAKEINTRESOURCE(IDB_BITMAP_ICONS), toolbarButtonSize.cx, 1, 
     0, IMAGE_BITMAP, LR_CREATEDIBSECTION|LR_SHARED); 
    m_hTBHottrack = ImageList_LoadImage((HINSTANCE)hAppInstance, 
     MAKEINTRESOURCE(IDB_MOUSEOVER), toolbarButtonSize.cx, 1, 
     0, IMAGE_BITMAP, LR_CREATEDIBSECTION|LR_SHARED); 

    SendMessage(hwndSysButtonTB, (UINT) TB_SETIMAGELIST, 0, (LPARAM)m_hTBImageList); 
    SendMessage(hwndSysButtonTB, (UINT) TB_SETHOTIMAGELIST, 0, (LPARAM)m_hTBHottrack); 
    SendMessage(hwndSysButtonTB, (UINT) TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); 

    // win2k: set color of hot tracking frame 
    COLORSCHEME scheme; 
    scheme.dwSize = sizeof(scheme); 
    scheme.clrBtnHighlight = RGB(175,175,175); 
    scheme.clrBtnShadow = RGB(175,175,175); 
    SendMessage(hwndSysButtonTB, (UINT) TB_SETCOLORSCHEME, 0, (LPARAM)&scheme); 

    TBBUTTON ButtonEnd =   {0,ID_BUTTON_END,TBSTATE_ENABLED,TBSTYLE_BUTTON}; 
    TBBUTTON ButtonRefresh =  {1,ID_BUTTON_REFRESH,TBSTATE_ENABLED,TBSTYLE_BUTTON}; 
    TBBUTTON ButtonOptions =  {2,ID_BUTTON_PROPERTIES,TBSTATE_ENABLED,TBSTYLE_BUTTON}; 



    SendMessage(hwndSysButtonTB, (UINT) TB_ADDBUTTONS, 1, (LPARAM)&ButtonEnd); 
    SendMessage(hwndSysButtonTB, (UINT) TB_ADDBUTTONS, 1, (LPARAM)&ButtonRefresh); 
    SendMessage(hwndSysButtonTB, (UINT) TB_ADDBUTTONS, 1, (LPARAM)&ButtonOptions); 

} 

Répondre

0

Vous devez appeler

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

à la fin de votre fonction.

Et je pense que vous devriez utiliser un tableau TBBUTTON au lieu de trois variables distinctes. Ensuite, vous pouvez les ajouter tous en même temps avec

SendMessage(hwndSysButtonTB, (UINT) TB_ADDBUTTONS, 3, (LPARAM)&ButtonArray); 
+0

Merci, ça a fonctionné maintenant – whoi

Questions connexes