关于Static申明的函数中显示数据的办法:

 static是不带this指针的.
也不能操作非静态数据,
有人问既然这样还为什么拿去修改数据呢?
有的回调函数实在没办法,只有申明成静态函数,
但是又想在回调的同时更新显示非全局数据,
这个就比较马上.

1,最简单的:

  AfxMessageBox(str); 

申明一个全局Csting,直接弹出来显示.

2,如果想在EDIT窗口中显示,这个办法不错

((CEdit *)((CVideo2Dlg *)pEditWnd)->GetDlgItem(IDC_DISPDATA))->SetWindowText(msg);
 (pEditWnd->GetDlgItem(IDC_DISPDATA))->ReleaseDC(dc);

3;还有种办法,就是传递一个指针给静态函数,
如果不能传递的话,就只有申明一个全局指针了.
并且在init的时候获取对话框的this指针.

CString msg;
 msg.Format("num corners found: %d/n", cornerCount); 
 tempDlg->m_dispdata.Format(msg);
 tempDlg->Disp();

cMyDlg::Disp()
{
  updatadate(false);
}

在Debug版本中有时还是会报错,但是在Release版本中不会报错.

 --------------------
昨日在调试程序的时候,方法二老是出错,
每次点击其他按钮的时候都会卡住,
今天一检查才发现:

问题代码:

 CDC *dc=(pWnd->GetDlgItem(IDC_IMAGE))->GetDC();
 img.Show(dc->m_hDC,0,0,img.Width(),img.Height(),0,0);
 (pWnd->GetDlgItem(IDC_IMAGE))->ReleaseDC(dc);

 ((CVideo2Dlg *)pEditWnd)->GetDlgItem(IDC_DISPDATA1)->SetWindowText(msg);
 (pEditWnd->GetDlgItem(IDC_DISPDATA1))->ReleaseDC(dc);

 第二次的dc重复了前一个,改后:

 ((CVideo2Dlg *)pEditWnd)->GetDlgItem(IDC_DISPDATA1)->SetWindowText(msg);
 
------------------------------

另外一种方法
((CVideo2Dlg *)pWnd)->SetDlgItemText(IDC_DISPDATA, msg);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值