弹出对话框移动留有痕迹,并且有数据时引起程序崩溃
时间:2011-12-06
来源:互联网
想实现的功能:主对话框中有一个编辑框和空白区域,工具栏上有一个自定义按钮,我在框架类的creat中创建了一个子线程用来接收数据,接收的数据通过postThreadmessage传回给主线程,在app中进行处理,在app中的子线程响应函数CWMTPApp::OnSockThread(WPARAM wParam, LPARAM lParam)中调用
m_pCommView->GetSafeHwnd();//m_pCommView是主对话框的一个对象
m_pCommView->GetDlgItem(IDC_EDIT_RECEIVE)->SetWindowText(m_pCommView->m_strReceive);//可以在编辑框中显示数据
m_pCommView->ShowTop();//根据数据在主对话框空白区域绘图
这些都没有问题,能正常运行和显示,但是只要一点工具栏上的自定义按钮,弹出一个非模式对话框
void CMainFrame::OnDianliang()
{
// TODO: Add your command handler code here
pView=(CCommView *)GetActiveView( );
if(pView->m_dianliang)
{
pView->m_dianliang=false;
}
else
{
pView->m_dianliang=true;
CDianliang *dlg=new CDianliang;
dlg-> Create(IDD_DIANLIANG,NULL);
}
}
程序马上就崩溃了,求救各位大神怎样解决啊
m_pCommView->GetSafeHwnd();//m_pCommView是主对话框的一个对象
m_pCommView->GetDlgItem(IDC_EDIT_RECEIVE)->SetWindowText(m_pCommView->m_strReceive);//可以在编辑框中显示数据
m_pCommView->ShowTop();//根据数据在主对话框空白区域绘图
这些都没有问题,能正常运行和显示,但是只要一点工具栏上的自定义按钮,弹出一个非模式对话框
void CMainFrame::OnDianliang()
{
// TODO: Add your command handler code here
pView=(CCommView *)GetActiveView( );
if(pView->m_dianliang)
{
pView->m_dianliang=false;
}
else
{
pView->m_dianliang=true;
CDianliang *dlg=new CDianliang;
dlg-> Create(IDD_DIANLIANG,NULL);
}
}
程序马上就崩溃了,求救各位大神怎样解决啊
作者: adhua198 发布时间: 2011-12-06
只要这时候没有数据来,还是显示正常的,一旦有数据进来,程序马上就崩溃了
作者: adhua198 发布时间: 2011-12-06
弹出对话框的绘图我写在onpaint中
void CDianliang::OnPaint()
{
// device context for painting
// CClientDC pDC(this);
// Invalidate();
CDC * pDC = GetDC();
CPen redpen(PS_SOLID,1,RGB(255,0,0));
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetBkMode(TRANSPARENT);
pDC-> SelectObject(redpen);
pDC->SetViewportOrg(40,350);
pDC-> MoveTo(0,0);
pDC->LineTo(1485,0 );
//画曲线
for (int k=0;k<dlcount-60;k=k+60)
{
pDC->MoveTo(dlsensor[0][k].dltime/60,dlsensor[0][k].dlvalue*100);
pDC->LineTo(dlsensor[0][k+60].dltime/60,dlsensor[0][k+60].dlvalue*100);
}
}
void CDianliang::OnPaint()
{
// device context for painting
// CClientDC pDC(this);
// Invalidate();
CDC * pDC = GetDC();
CPen redpen(PS_SOLID,1,RGB(255,0,0));
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetBkMode(TRANSPARENT);
pDC-> SelectObject(redpen);
pDC->SetViewportOrg(40,350);
pDC-> MoveTo(0,0);
pDC->LineTo(1485,0 );
//画曲线
for (int k=0;k<dlcount-60;k=k+60)
{
pDC->MoveTo(dlsensor[0][k].dltime/60,dlsensor[0][k].dlvalue*100);
pDC->LineTo(dlsensor[0][k+60].dltime/60,dlsensor[0][k+60].dlvalue*100);
}
}
作者: adhua198 发布时间: 2011-12-06
没人么?别沉了啊,救命啊
作者: adhua198 发布时间: 2011-12-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28