解析MFC具体过程中,有个地方我不明白。对您来说很简单

BOOLMyWindow::PreCreateWindow(CREATESTRUCT&cs){CFrameWnd::PreCreateWindow(cs);cs.cx=2... BOOL MyWindow::PreCreateWindow(CREATESTRUCT &cs)
{

CFrameWnd::PreCreateWindow(cs);
cs.cx=2000;
return TRUE;
};
继承了CFrameWnd,改写PreCreateWindow()
CFrameWnd::PreCreateWindow(cs);是用来注册等等。所以应该在调用这个CFrameWnd::PreCreateWnd()函数之前改写cs的值。但是把cs.cx=2000放在CFrameWnd::PreCreateWnd()之前和之后怎么都可以改?
注册之后改变cs的值不是徒劳无功的吗?应该在注册之前改变cs的值的不是吗?
展开
 我来答
bhtzu
2012-07-05 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4073万
展开全部
赋值放在后面确实是可以修改成功的。这里面涉及两个逻辑:
1·要注意,这里是形参,地址传递的,也就是说,更改会对调用者生效。
2·创建窗口的逻辑,实际这个cs结构是传递给CXXXWnd::Create()函数的,也就是说,在你的实际类里面,CXXXWnd窗口,执行了PreCreate之后,由本窗口传递给了Create消息。这样你对cs的改变,即使CWnd基类没有得到,但在本窗口生效了。
当然,这个使用方式是不建议的,这不符合MFC的框架规则,虽然在这里没错,但在其它函数中使用,可能会出现问题。
归悦欣cf
2012-07-05 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:60%
帮助的人:1289万
展开全部
试一试不就知道了吗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式