SDK自建工具栏和状态栏,窗口大小改变,栏不变
用SDK自己创建工具栏和状态栏,窗口大小改变,如最大化,但是工具栏和状态栏位置不变。
求指导啊~
[code=C/C++][/code]
hStatusBar=CreateWindowEx(0L,STATUSCLASSNAME,NULL,WS_CHILD | WS_VISIBLE,//Create StatusBar
0, 0, 0, 0, m_hWnd,(HMENU)IDR_MENU1,g_hInstance,NULL);
if(NULL==hStatusBar)
{
MessageBox(m_hWnd,"StatusBar is not created!",NULL,MB_ICONERROR);
return FALSE;
}
SetStatusBar(m_hWnd);//Set Statusbar
hToolBar=CreateWindowEx(0L,TOOLBARCLASSNAME,NULL,WS_CHILD | WS_VISIBLE,//Create ToolBar
0, 0, 0, 0, m_hWnd,(HMENU)IDR_MENU1,g_hInstance,NULL);
if(NULL==hToolBar)
{
MessageBox(m_hWnd,"ToolBar is not Created!",NULL,MB_ICONERROR);
return FALSE;
}
SetToolBar(m_hInstance);//Set Toolbar
void SetStatusBar(HWND m_hWnd)
{
RECT rcClient;
int width[5];
GetClientRect(m_hWnd, &rcClient);
int length=rcClient.right/3;
width[0]=length;
width[1]=length*2;
width[2]=length*2+length/3;
width[3]=length*2+2*length/3;
width[4]=length*3;
SendMessage(hStatusBar, SB_SETPARTS, 5, (LPARAM)(LPINT)width);
SendMessage(hStatusBar, SB_SETTEXT, (WPARAM)0, (LPARAM)time.GetTime());
SendMessage(hStatusBar, SB_SETTEXT, (WPARAM)1, (LPARAM)TEXT("1111"));
}
void SetToolBar(HINSTANCE m_hInstance)
{
TBBUTTON tbb[]={
{ 0, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 1, ID_FILE_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 2, ID_FILE_EXIT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 2, 0,TBSTATE_ENABLED, TBSTYLE_SEP, 0L, -1},
{ 3, ID_DRAW_REC, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 3, 0,TBSTATE_ENABLED, TBSTYLE_SEP, 0L, -1},
{ 4, ID_HELP_ABOUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
};
TBADDBITMAP tbBitamps;
tbBitamps.hInst=m_hInstance; // current instance
tbBitamps.nID=IDR_TOOLBAR1 ;
SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
SendMessage(hToolBar, TB_ADDBUTTONS, (WPARAM)7, (LPARAM)(LPTBBUTTON)&tbb);
SendMessage(hToolBar, TB_ADDBITMAP, 5, (LPARAM)&tbBitamps);
}
[解决办法]
WM_SIZE消息响应中计算好工具或者状态栏的显示位置,然后MoveWidow/SetWindowsPos()应该可以的
SDK自基建工具栏和状态栏,窗口大小改变,栏不变
SDK自建工具栏和状态栏,窗口大小改变,栏不变用SDK自己创建工具栏和状态栏,窗口大小改变,如最大化,但是工具
