Новичок
Профиль
Группа: Участник
Сообщений: 8
Регистрация: 19.11.2008
Репутация: нет Всего: нет
|
Вот код проги. Делаю ребар и в нем тулбар. Дело в том что ребар отображаться не хочет. Просто пустое окно создается и все... | Код | #pragma comment(lib,"comctl32.lib") #include <windows.h> #include <commctrl.h> #include "resource.h"
LRESULT CALLBACK WndProc(HWND Wnd,UINT message,WPARAM wparam,LPARAM lparam); bool Create(HWND hwnd);
int APIENTRY WinMain(HINSTANCE hinst,HINSTANCE prev,LPSTR cmd,int show) { //Неиспользуемые параметры UNREFERENCED_PARAMETER(prev); UNREFERENCED_PARAMETER(cmd); LPCTSTR classn;//Имя класса окна classn=L"Classname"; //Регистрация окна WNDCLASSEX wndc; wndc.lpszClassName=classn; wndc.lpfnWndProc=WNDPROC(WndProc); wndc.cbSize=sizeof(WNDCLASSEX); wndc.cbClsExtra=0; wndc.cbWndExtra=0; wndc.hbrBackground=HBRUSH(COLOR_WINDOW); wndc.hInstance=hinst; wndc.hCursor=LoadCursor(0,IDC_ARROW); HICON Icon; Icon = LoadIcon(hinst,MAKEINTRESOURCE(IDI_APP)); wndc.hIcon=wndc.hIconSm=0; wndc.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1); wndc.style=CS_HREDRAW|CS_VREDRAW; RegisterClassEx(&wndc); //Создание окна HWND wnd=CreateWindowEx(WS_EX_APPWINDOW,classn,L"Прога", WS_SYSMENU|WS_THICKFRAME|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|//Стиль окна WS_VISIBLE| WS_CLIPCHILDREN,//Чтобы не мерцало CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,//Размер и положение окна 0,0,hinst,0); SendMessage(wnd,WM_SETICON,ICON_BIG,LPARAM(Icon));//Установка иконки ShowWindow(wnd,SW_SHOW); UpdateWindow(wnd); //Цикл сообщений MSG msg; while (GetMessage(&msg,0,0,0)!=0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
bool Create(HWND hwnd) { INITCOMMONCONTROLSEX init; init.dwSize=sizeof(INITCOMMONCONTROLSEX); init.dwICC=ICC_COOL_CLASSES|ICC_BAR_CLASSES; InitCommonControlsEx(&init); //тулбар HWND toolbar = CreateWindowEx(0,TOOLBARCLASSNAME,0, WS_CHILD|TBSTYLE_WRAPABLE|CCS_NOPARENTALIGN| TBSTYLE_TRANSPARENT|CCS_NODIVIDER, 0,0,0,0,hwnd,0,GetModuleHandle(0),0); if (!toolbar) return false; HBITMAP bmp; bmp=LoadBitmap(GetModuleHandle(0),MAKEINTRESOURCE(IDB_BITMAP1)); HIMAGELIST imgl; imgl=ImageList_Create(24,24,ILC_COLOR32|ILC_MASK,3,0); ImageList_Add(imgl,bmp,0); SendMessage(toolbar,TB_SETIMAGELIST,WPARAM(0),LPARAM(imgl)); SendMessage(toolbar,TB_LOADIMAGES, WPARAM(IDB_STD_SMALL_COLOR),LPARAM(HINST_COMMCTRL)); TBBUTTON tbtn[1]; tbtn->fsState=TBSTATE_ENABLED; tbtn->fsStyle=BYTE(TBSTYLE_BUTTON); tbtn->iBitmap=0; tbtn->iString=INT_PTR(L"Кнопка"); tbtn->idCommand=0; SendMessage(toolbar,TB_INSERTBUTTON,WPARAM(0),LPARAM(tbtn)); //ребар HWND rebar = CreateWindowEx(0,REBARCLASSNAME,0, WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_VISIBLE| RBS_VARHEIGHT|CCS_NODIVIDER|RBS_BANDBORDERS| CCS_NOPARENTALIGN|CCS_NORESIZE, 0,0,0,0, hwnd,0,GetModuleHandle(0),0); if (!rebar) return false; REBARBANDINFO rbi={sizeof(REBARBANDINFO)}; rbi.fMask= RBBIM_STYLE| //RBBIM_TEXT| RBBIM_CHILD| RBBIM_CHILDSIZE| RBBIM_SIZE; rbi.fStyle=RBBS_CHILDEDGE|RBBS_GRIPPERALWAYS; rbi.lpText=L"Toolbar"; rbi.cbSize=sizeof(rbi.lpText); rbi.cyChild=0; rbi.cyMinChild=24; rbi.cxMinChild=0; rbi.cx=0; rbi.hwndChild=toolbar; if (!SendMessage(rebar,RB_INSERTBAND,WPARAM(-1),LPARAM(&rbi))) { return false; } return true; }
LRESULT CALLBACK WndProc(HWND Wnd,UINT message,WPARAM wparam,LPARAM lparam) { switch (message) { case WM_CREATE: { if (Create(Wnd)==false) MessageBox(0,0,0,0); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(Wnd,message,wparam,lparam); } return 0; }
|
|