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

发表于:2007-07-01来源:作者:点击数: 标签:
VC中基于文档(SDI/MDI)程序中能直接用串口MSComm通讯控件吗? 龚建伟 熊光明 读了我写的,有不少网友问到在VC中基于文档(SDI/MDI)程序中能不能直接用MSComm通讯控件。答案是NO! MScomm控件(几乎是所有的控件)都必须有一个可以寄身的对话框。必须从工具

 

VC中基于文档(SDI/MDI)程序中能直接用串口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控件。详细说明请参阅:。


clearcase/" target="_blank" >cccc SIZE=2 width=500>

原文转自:http://www.ltesting.net