MFC在分屏后,分为左右两个对话框即两个view区相关参数的设置


1.建议将所有菜单栏按钮都定义在CMainFrame类中。则不会产生将菜单栏按钮定义在不同的view内,点击另一view界面产生的相应菜单项变虚现象。该现象主要由焦点不在菜单栏按钮的定义view内所产生的。

2.updatedata()函数不能跨类调用。即在CMainFrame类中定义了左边view的对象,同时通过该对象调用左侧view的函数,若此时此函数的定义中包含updatedata(),则会报错。

解决办法:在左侧view的类中定义自定义消息,利用消息发送updatedata()函数,代码如下:

 

//CVIEW_L.h中的顶部定义消息:
#define WM_UPDATEDATA_L  10000+4 //10000以上即可。
 
//CVIEW_L.h中声明函数:
LRESULT OnUpdateData_L(WPARAM wParam,LPARAM lParam);//注:函数的类型和参数不能改变。
 
//CVIEW_L.cpp中在宏定义中加入:
ON_MESSAGE(WM_UPDATEDATA_L, OnUpdateData_L)
 
//在CVIEW_L.cpp中定义函数:
LRESULT CView_L::OnUpdateData_L(WPARAMwParam, LPARAM lParam)
{
UpdateData(wParam);
return 0;
}
 
//在要使用处,加入如下语句:
CMainFrame*pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CTianDiTongXun_CView*pViewRes=(CTianDiTongXun_CView*)pMF->m_wndSplitter.GetPane(0,0);
pViewRes->SendMessage(WM_UPDATEDATA,FALSE);
 


3.分析在不同类中调用函数时可采用发送消息、定义对象调用、静态函数方法,现分析各自缺点:

(1)静态函数:静态函数要求其中所用的变量为静态变量,固中间若包含控件类的变量时,无法变为静态变量,固无法使用该方法。

(2)定义类的对象:此方法即使出现A的函数中又调用B函数也可使用,或A函数中使用了A函数类的公共类变量,也可正常使用。只是发现若A函数中出现定时器SetTimer时,利用此方法调用A函数,则会报错。

(3)发送消息:也无法利用发消息调用定时器函数。将定时器的OnTimer和SerTimer函数都定义在A类,同时在A类的相应函数中发消息调用B类函数,但注意要将B类中储存函数结果的变量定义为静态变量,否则值可能无法使用。

 

完。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值