none
????求助:vc++2010 使用CMSComm出现“该组件上的 GetValue 操作失败,生成错误代码 0x80020003。” RRS feed

  • 问题

  • 1.我的系统:Win7_x64;vc++为VS2010;使用MFC对话框开发一个串口程序;控件MSComm。

    2.我从工具箱里成功添加MSComm控件,

    并生成CMSComm类:如图:

    3、关联上控件变量 CMSComm m_MSComm;

    4、在对话框OnInitDialog()添加创建MSComm控件示例代码:

    //***创建串口实例
    
    	// 控件样式
    	DWORD style = WS_VISIBLE | WS_CHILD;
    
    	// 创建控件实例:失败则弹出警告。
    	if(!m_mMSComm.Create(NULL, style, CRect(0, 0, 0, 0), this, IDC_MSCOMM))
    	{
    		MessageBox(L"创建通信模块失败,请确认听力检测仪是否正确连接!", 
    			L"警告", MB_OK |MB_ICONINFORMATION | MB_ICONASTERISK);
    	
    		return FALSE;
    	}
    

    5、一运行就出错:

    2011年9月15日 8:41

答案

  • 最好别用这些COM封装的接口,直接调用API来访问串口很简单也很清晰.

    你可以参考这些API在MSDN的说明

    CreateFile

    CloseHandle

    ReadFile

    WriteFile

    GetCommState

    SetCommState


    0xBAADF00D
    2011年9月19日 11:46
    版主

全部回复

  • 补充:5、如图:

     

    6、MSComm控件属性“About”提示:该组件上的 GetValue 操作失败,生成错误代码 0x80020003。

     

    7、我设置断点调试过:问题出在第4步描述的“m_mMSComm.Create(NULL, style, CRect(0, 0, 0, 0), this, IDC_MSCOMM)”这。

     

    8、我尝试过重新注册MSComm32.oxc.并检查了:

    HKEY_CLASSES_ROOT\Licenses,在其中添加主键
    4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为:

    kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
    一切没问题。

    9、我在另一个基于MFC SDI的程序中使用MSComm就没问题。

     

    最后,请大家帮帮忙。谢谢了。感激不尽。

    2011年9月15日 8:48
  • 试一下通过控件关联

    不用动态方式创建

    2011年9月16日 0:13
  • 楼上的大神,能具体说说怎么做不?拜托了。
    2011年9月16日 8:27
  • 最好别用这些COM封装的接口,直接调用API来访问串口很简单也很清晰.

    你可以参考这些API在MSDN的说明

    CreateFile

    CloseHandle

    ReadFile

    WriteFile

    GetCommState

    SetCommState


    0xBAADF00D
    2011年9月19日 11:46
    版主
  • 谢谢各位朋友。呵呵
    2011年9月22日 1:11