请高手看一段代码,讨论一个问题 我在onCreate中new了,代码中有 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用((CCWZView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView()->MoveWindow()试试! 因为OnSize在OnCreate之前调用,所以m_MyWnd没有初始化!!! edrftgyh(老胡):我的CMyWnd不是从CView类继承来的,没有别的办法 什么时候提示Access Voilation,是在OnCreate() or OnSize()?你可以单步执行调试。若自己还不可以确定可以把程序EMAIL过来! mmwhw1(黑人) :是在OnSize()时Access Voilation的,我的IsWindow(m_MyWnd)为False 你用MessageBOx();这个函数试一试,是不是OnCreate是在OnSize之前调用的,如果是这样的话,你可以,让OnSize();在一开始时不调用m_MyWnd->MoveWindow(0,0,cx,cy)函数,具体你可这样:定义一个BOOL变量m_bInit,初始化为FALSE;然后:void CMainFrame::OnSize(UINT nType, int cx, int cy) { CFrameWnd::OnSize(nType, cx, cy); // TODO: Add your message handler code here if(m_bInit=TRUE) { m_MyWnd->MoveWindow(0,0,cx,cy); m_bInit=TRUE; }}这样就该可以了!可了后,说一声, m_bInit有什么意义,OnSize()确实是在onCreate前调用 wm_size 在 wm_create之前发出,所以m_MyWnd->MoveWindow(0,0,cx,cy);语句中m_MyWnd指针无效。可改为:if (m_MyWnd) m_MyWnd->MoveWindow(0,0,cx,cy);当然m_MyWnd在CMainFrame构造函数中要置空。 m_bInited 在构造函数中初始化为 FALSE, 表示 MyWidow 已经创建.在 OnCreate中 的 m_MyWnd->Create 成功后 使为 TRUE;void CMainFrame::OnSize(UINT nType, int cx, int cy) { CFrameWnd::OnSize(nType, cx, cy); if(m_bInited) { m_MyWnd->MoveWindow(0,0,cx,cy); }} m_bInited 在构造函数中初始化为 FALSE, 表示 MyWidow 已经创建.在 OnCreate中 的 m_MyWnd->Create 成功后 使为 TRUE;void CMainFrame::OnSize(UINT nType, int cx, int cy) { CFrameWnd::OnSize(nType, cx, cy); if(m_bInited) { m_MyWnd->MoveWindow(0,0,cx,cy); }} dll函数中的字符串传递 对话框画图问题 VC 自绘的图怎么长时间保存 问一个软件外包的问题 新手问题:在VC中,怎样在Button上放置位图?希望各位前辈给点信心! 谢谢!!! vc下如何操作XML文件 學Hou Sir《深入淺出MFC》之問題3 求解,1000分 程序控制权问题 socket 如何支持https 动态生成的控件如何处理它的消息 如何控制?
调用的,如果是这样的话,你可以,让OnSize();在一开始时不调用
m_MyWnd->MoveWindow(0,0,cx,cy)函数,具体你可这样:
定义一个BOOL变量m_bInit,初始化为FALSE;
然后:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if(m_bInit=TRUE)
{
m_MyWnd->MoveWindow(0,0,cx,cy);
m_bInit=TRUE;
}
}
这样就该可以了!可了后,说一声,
m_MyWnd->MoveWindow(0,0,cx,cy);语句中
m_MyWnd指针无效。可改为:
if (m_MyWnd)
m_MyWnd->MoveWindow(0,0,cx,cy);当然m_MyWnd在CMainFrame构造函数中要置空。
在 OnCreate中 的 m_MyWnd->Create 成功后 使为 TRUE;
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if(m_bInited)
{
m_MyWnd->MoveWindow(0,0,cx,cy);
}
}
在 OnCreate中 的 m_MyWnd->Create 成功后 使为 TRUE;
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if(m_bInited)
{
m_MyWnd->MoveWindow(0,0,cx,cy);
}
}