返回信息流我建了一个SDI的工程,想实现在主窗口弹出后,自定义改变客户区的大小。
首先,PreCreateWindow()是在MainFrame弹出前进行窗口大小设置的,所以此函数我觉得行不通,试验之后也不行
其次,MainFrame::OnSize(),试了之后没效果
然后,View类的OnSize(),同样是不起作用
谁能告诉我该怎么做啊?
这是一条镜像帖。来源:北邮人论坛 / soft-design / #19983同步于 2007/7/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
还是VC窗口大小的问题
Crane
2007/7/24镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 coolwc 的大作中提到: 】
: 建议你从头开始看 win32 api 不要一上来就用mfc
: api里用GetClientRect SetClientRect 得到客户区大小
请看清问题,好吗?
是我不对。。我收回刚才的话
下面解决问题
用
RECT *rt;
GetClientRect(hWnd,rt);
rt->left=
rt->top=
什么时候改就看你放到处理什么消息的函数里
【 在 coolwc 的大作中提到: 】
: 是我不对。。我收回刚才的话
: 下面解决问题
: 用
: ...................
恩,谢了,我试试
N久没碰过MFC了。找了一下以前的代码。
MFC里设置窗口位置和大小的,这么用应该是没问题的,lz自己试试看吧:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
HDC hdc=::GetDC(NULL); //获得屏幕设备描述表句柄
int ScrWidth=::GetDeviceCaps(hdc,HORZRES); //获取屏幕水平分辨率
int ScrHeight=::GetDeviceCaps(hdc,VERTRES); //获取屏幕垂直分辨率
::ReleaseDC(NULL,hdc); //释放屏幕设备描述表
int x=(ScrWidth-806)/2;
int y=(ScrHeight-627)/2;
cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0);
cs.x=x;
cs.y=y;
cs.cx=806;
cs.cy=627;
return TRUE;
}