vc 当对话框最大化时怎么处理状态条

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:35:19
以前写了个项目,主体是个对话框,给它加了个状态条,现在这个对话框需要拉伸了,可以最大化了,这时出了个问题,状态条还在原来的位置。
但我是用SDK加的对话框啊,怎么重置位置
HWND hDlg=GetSafeHwnd();
HINSTANCE hInstance=AfxGetInstanceHandle();
strText.LoadString(IDS_TUNNEL);
m_hStatusWindow=CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER,
strText,//显示在状态栏上的信息
hDlg, //父窗口句柄
IDS_STATUS); //预定义的资源ID
int pint[2]={162,-1};//110,250,300设定间隔
::SendMessage(m_hStatusWindow,SB_SETPARTS,2,(LPARAM)pint);

问题解决了,多谢2位热情帮助,可能是我提问的不太明白,两位的答案对我没什么用。虽然说的都对,但没说到点上。
这里我申明一下,我是直接向操作系统发消息创建的状态条,在我对话框类里边根本就没有状态条类对象,你们说计算位置然后MOVEWINDOW(),用谁来MOVEWINDOW()?只有在获得状态条类对象才能MOVEWINDOW()。说到这,其实还有个方法更简单,只要再次发送消息::SendMessage(m_hStatusWindow,SB_SETPARTS,2,(LPARAM)pint);状态条位置就正常了. oh my god! 最后,扔钢镚决定分属谁啦!^^~

响应WM_SIZE消息,然后在OnSize函数中获得现在的窗口大小,根据新的窗口大小重设状态条位置

补充:一样的啊,SDK也是响应WM_SIZE消息,然后在消息响应中根据新窗口大小重设状态条位置

SDK加的,就在主对话框的WndProc里面的WM_SIZE消息里面处理,状态条的位置改变,WM_SIZE消息,的参数就是当前窗口的尺寸,相应调整,使用MoveWindow移动状态条就行了