首页

 

发表论文

 
自制软件
 
串口通讯
 
VC/C编程
 
网络通讯
 
机器人控制
 
MATLAB
 
   

VC中基于文档(SDI/MDI)程序中能直接用MSComm通讯控件吗?

龚建伟 熊光明 (注:此文在不知名的网友建议下修改,在此感谢)

 


     读了我写的串口调试助手源程序(MScomm控件)及详细编程过程,有不少网友问到在VC中基于文档(SDI/MDI)程序中能不能直接用MSComm通讯控件。答案是NO!

      MScomm控件(几乎是所有的控件)都必须有一个可以寄身的对话框。必须从工具栏中把控件图标拖入对话框中,如图所示。


对话框工具栏上的图标是不能拖到视(VIEW)中去的,它的寄生所在就是对话框,因此MSComm是离不开对话框的。也有人说过变通的方法,如做一个隐藏的对话框,即不让对话框显示,只用oncomm串口事件处理函数,除非经过特殊处理,否则是行不通的。下面是一位网友的出错经历:

   我做了个串口通信的程序(SDI),在工程中插入ms communications control,version 6.0,但用其方法时出现assert failure,用debug,问题好像是m_pCtrlSite=FALSE,我是在CMyView中加入public:CMSComm m_ComPort,再在消息映射中initialising com,但一调用方法,就出错。

   那么,如何在SDI/MDI中应用串口通讯呢?自己用API或者用一些较为成熟的类如CSerialPort类等。

  如果执意要用MSComm通讯控件,则必须在VIEW中的oncreate()函数中加上一些特殊的处理,将对话框程序中的自动初始化控件自已来做一个初始化,具体程序我将尽快放在我的主页上。

   还有,应该注意的是:如果一个视类派生自CFormViewo类,它还是可以用那个控件的,因为这个类具有许多无模式对话框的特点。另外还有一个类,数据库中CRecordView类也依赖于特定的对话框模板资源,是基于MDI的,也可以用MSCOMM控件。详细说明请参阅:VC中ODBC数据库技术应用源程序详解之二

 
   
 

                                             

转载本站原版内容,请注明作者,并说明来自http://www.gjwtech.com