小妹编了一个程序,创建的是非模式对话框,程序中需要这个对话框动态改变大小,并且其中的控件也相应的改变。
起先,我在Dialog类的OnSize()函数中直接添加改变控件的代码,编译通过,但运行出错。然后,我把改变控件大小的代码单独成为一个子函数,在OnSize()中调用,结果同上。然后我在OnSize()函数中发送自定义消息:
void CResultSimple::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
PostMessage(WM_WINDOW_SIZE);
}
响应函数为:
void CResultSimple::OnDialogSize()
{
CRect rect;
GetClientRect(&rect);
rect.top+=100;
rect.left-=2;
rect.right+=1;
rect.bottom+=2;
m_List_Result_Simp.MoveWindow(&rect); CRect btnRect;
int width=rect.right-rect.left;
width=width/18;
btnRect.top=72;
btnRect.bottom=95; btnRect.left=7*width;
btnRect.right=btnRect.left+width*2;
m_btnInsert.MoveWindow(&btnRect); btnRect.left=11*width;
btnRect.right=btnRect.left+width*2;
m_btnModify.MoveWindow(&btnRect); btnRect.left=15*width;
btnRect.right=btnRect.left+width*2;
m_btnDelete.MoveWindow(&btnRect);
}
编译通过,运行正常。但是,当我生成Release版的时候,编译通过,但是运行出错。
说是WINOCC.CPP 279行出错。还有,我的程序的Debug版在我自己的电脑上运行没有问题,当那到别人的电脑上运行时(装有vc),报告同样的错误:WINOCC.CPP 279行出错。课程设计,快要交了,急急急……帮帮我……
起先,我在Dialog类的OnSize()函数中直接添加改变控件的代码,编译通过,但运行出错。然后,我把改变控件大小的代码单独成为一个子函数,在OnSize()中调用,结果同上。然后我在OnSize()函数中发送自定义消息:
void CResultSimple::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
PostMessage(WM_WINDOW_SIZE);
}
响应函数为:
void CResultSimple::OnDialogSize()
{
CRect rect;
GetClientRect(&rect);
rect.top+=100;
rect.left-=2;
rect.right+=1;
rect.bottom+=2;
m_List_Result_Simp.MoveWindow(&rect); CRect btnRect;
int width=rect.right-rect.left;
width=width/18;
btnRect.top=72;
btnRect.bottom=95; btnRect.left=7*width;
btnRect.right=btnRect.left+width*2;
m_btnInsert.MoveWindow(&btnRect); btnRect.left=11*width;
btnRect.right=btnRect.left+width*2;
m_btnModify.MoveWindow(&btnRect); btnRect.left=15*width;
btnRect.right=btnRect.left+width*2;
m_btnDelete.MoveWindow(&btnRect);
}
编译通过,运行正常。但是,当我生成Release版的时候,编译通过,但是运行出错。
说是WINOCC.CPP 279行出错。还有,我的程序的Debug版在我自己的电脑上运行没有问题,当那到别人的电脑上运行时(装有vc),报告同样的错误:WINOCC.CPP 279行出错。课程设计,快要交了,急急急……帮帮我……
解决方案 »
- 谁在DLL中实现过多文档框架?100分赠送
- 我自己在本地机器上用sourcesafe,数据库也是本地的,可是为什么?
- 当用户以普通用户的身份登录Windows时,怎么让自己的程序以administrator的权限运行
- 关于记事本设置字体的问题
- 自己处理消息循环,抛弃TranslateMessage和DispatchMessage,行么?
- 谁能详细解释一下下面结构及其用法
- 为什么我在win2000下写出的程序,打包后在win98下运行提示找不到psapi.dll?????
- 关于数据库查询的问题,郁闷!!
- 很想知道的一些问题,给高分
- vc和c++ builder 还有c++之间的关系
- 关于typedef struct 的一点问题
- 在CMyList里我想改变某个列表元素的位置,试了好多次都没实现,郁闷中。。。。
类似加入:if(!m_StdTree.m_hWnd)
return;
if(!m_StdDataList.m_hWnd)
return;
if(!m_wndVSplitterBar.m_hWnd)
return;先看一看窗口句柄是不是存在
解决方法就是先判断控件的句柄是否有效。。
if(m_btnInsert.GetSafeHwnd())m_btnInsert.MoveWindow(&btnRect);
{
ASSERT(::IsWindow(m_hWnd));-------------------> 这是 279 行内容
窗口还没有生成,也就是说你的要更改大小的对象控件还没有生成
故,这个工作因自己完成,如果不是可用窗口,则不响应 ONSIZE 不修改大小就可以了 if (m_pCtrlSite == NULL)
::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
else
m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight, bRepaint);
}
同意 Saimen(单身情人)与 kingcom_xu(刀是用来杀人的!) 所说的
不知这样回答能不能得到分
说是内存不能为read555
{
CDialog::OnInitDialog();
OnDialogSize(); return TRUE;
}
{
CDialog::OnInitDialog();
OnDialogSize(); return TRUE;
}void CResultSimple::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(m_List_Result_Simp.GetSafeHwnd())
OnDialogSize();
}