这个问题困扰我好几天了,之前在网上搜索了,有如下解决方案,
1. 在CmainWindow的PrecreateWindow函数中对cs.x cs.y cs.cx cs.cy 等值进行设定即可。窗口生成的大小和位置根本不是我设定的想要的。 2. 在CmainWindow的OnCreate函数中调用SetWindowPos来设定窗口的位置和大小,尝试之后,发现SetWindowPos是将窗口定位到了我想要的地方和指定的大小,但随后调用了CRibbonTestView的OnInitialUpdate函数 void CRibbonTestView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); } 窗口位置和大小又改变了,最后程序出来的窗口的位置和大小也不是我指定的 还有一点我注意到了就是他窗口的大小和位置和最近一次关闭时是一样,如果它是在注册表里保存了这些信息下一次启动窗口的时候再从注册表内读出来设置的话,我这样还有机会能指定初始化窗口的位置和大小吗? 在你的程序一次都没有运行的情况下,改 CMainFrame 的初始化函数改 cx cy 即可; ------------------------------------------------------------------------------------------------------------------- 如果你已经运行过一次程序,改完 cx cy 之后,还需要清理一下注册表 HKCUsoftware[YourComp][YouApp] 再运行就 ok 了 |
|
来自: Frank_Chia > 《.NET》