你建工程的时候,是否选中了ActiveX Controls 复选框?

解决方案 »

  1.   

    http://support.microsoft.com/kb/q155059/
      

  2.   

    OK。 谢谢 lixiaosan(小三) ,问题解决了!  把 VC++ 6 卸掉,重新装了一次,就可以了。奇怪? 我现在想用 VC 来做一个“媒体播放器”,该如何做? 音视频的数据流是通过TCP/IP的网络过来的,被压缩了,MP4。别人提供给了我一个MP4的解码的 DLL 库。
      

  3.   

    还是关于最开始的那个串口通信的程序。我现在用 CMSCOMM 的控件写了个 232串口收发的小程序,数据的收发都能正常了。在程序的主窗口里 有一个数据接收窗口(EditBox) 和一个数据发送窗口(EditBox), 我现在在旁边加了两个“显示清空”的按钮,我想实现用按钮清空窗口(EditBox)里的数据。该如何做呢?请各位大哥指点我一二啊! thanks ...
      

  4.   

    定义一个关于EditBox控件的内存变量m_EditBox
    m_EditBox.SetWindowText(_T(""));
      

  5.   

    这样:
    m_SendData.Empty ();
    SetDlgItemText(IDC_Send,"");
      

  6.   

    谢谢 yefanqiu(叶帆:http://blog.csdn.net/yefanqiu) ,OK 了!还是关于最开始的那个串口通信的程序,我的新问题: 我现在在我程序的主窗口里,定义了两个Radio Button,想用来选择 COM1 或是 COM2进行通信 。 代码如下:void CMy232DEMO1Dlg::OnRadio1COM1() 
    {
    // TODO: Add your control notification handler code here

    m_ctrlComm.SetCommPort(1);           // USE COM1
    m_ctrlComm.SetInputMode(1);          // 
    m_ctrlComm.SetInBufferSize(1024);
    m_ctrlComm.SetOutBufferSize(1024);   
    m_ctrlComm.SetSettings("4800,n,8,1");       
    if(!m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(true);      
    m_ctrlComm.SetRThreshold(1);
    m_ctrlComm.SetInputLen(0);
    m_ctrlComm.GetInput();
    }void CMy232DEMO1Dlg::OnRadio2COM2() 
    {
    // TODO: Add your control notification handler code here
      m_ctrlComm.SetCommPort(2);         // USE COM2
    m_ctrlComm.SetInputMode(1);          // 
    m_ctrlComm.SetInBufferSize(1024);
    m_ctrlComm.SetOutBufferSize(1024);   
    m_ctrlComm.SetSettings("4800,n,8,1");       
    if(!m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(true);    // Open COM2 
    m_ctrlComm.SetRThreshold(1);
    m_ctrlComm.SetInputLen(0);
    m_ctrlComm.GetInput();
    }程序编译可以通过,LINK 也OK。运行后,在主窗口中先选择了 COM1 的Radio Button,正常;然后再选择COM2的Radio Button时,出现错误提示:端口已打开? 这是怎么回事啊??
    我的机器里有COM1和COM2 两个串口了。请各位大哥指点小弟我一二啊! thanks ...
      

  7.   

    如果想同时打开两个串口需要两个m_ctrlComm这种对象。如果只是想打开另外一个串口,那么要先关闭已经打开的前一个。
      

  8.   

    哦,谢谢 kb219(kkw2006) , 我现在是创建了两个m_ctrlComm对象,m_ctrlComm对应COM1口,m_ctrlComm2对应COM2口。 相应的代码如下:void CMy232DEMO1Dlg::OnRadioCOM1() 
    {
    // TODO: Add your control notification handler code here
    m_ctrlComm.SetCommPort(1);         // USE COM1
    m_ctrlComm.SetInputMode(1);          // 
    m_ctrlComm.SetInBufferSize(1024);
    m_ctrlComm.SetOutBufferSize(1024);   
    m_ctrlComm.SetSettings("4800,n,8,1");     
    if(!m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(true);    // Open COM1 
    m_ctrlComm.SetRThreshold(1);
    m_ctrlComm.SetInputLen(0);
    m_ctrlComm.GetInput(); m_ctrlComm2.SetCommPort(2);        
    if(m_ctrlComm2.GetPortOpen())
    m_ctrlComm2.SetPortOpen(false);          // Close  COM2}void CMy232DEMO1Dlg::OnRadioCOM2() 
    {
    // TODO: Add your control notification handler code here
    m_ctrlComm2.SetCommPort(2);         // USE COM2
    m_ctrlComm2.SetInputMode(1);          // 
    m_ctrlComm2.SetInBufferSize(1024);
    m_ctrlComm2.SetOutBufferSize(1024);   
    m_ctrlComm2.SetSettings("4800,n,8,1");     
    if(!m_ctrlComm2.GetPortOpen())
    m_ctrlComm2.SetPortOpen(true);    // Open COM2 
    m_ctrlComm2.SetRThreshold(1);
    m_ctrlComm2.SetInputLen(0);
    m_ctrlComm2.GetInput(); m_ctrlComm.SetCommPort(1);        
    if(m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(false);     // Close COM1}程序编译可以通过,LINK 也OK。运行后,在主窗口中先选择了 COM1 的Radio Button,正常;然后再选择COM2的Radio Button时,出现错误提示:端口已打开? 这是怎么回事啊?? 我在使用一个COM口时,不是已经关闭了另外的一个COM口。。
    我的机器里有COM1和COM2 两个串口了,而且也没有别的程序在使用COM2口了!请各位大哥指点小弟我一二啊! thanks ...
      

  9.   

    一个COM,一个MSCOMM,相互独立,不用去管另一个。m_ctrlComm2.SetCommPort(2); // USE COM2
    m_ctrlComm2.SetInputMode(1); //
    m_ctrlComm2.SetInBufferSize(1024);
    m_ctrlComm2.SetOutBufferSize(1024);
    m_ctrlComm2.SetSettings("4800,n,8,1");
    if(!m_ctrlComm2.GetPortOpen())
       m_ctrlComm2.SetPortOpen(true); // Open COM2
    else
       return ;
    m_ctrlComm2.SetRThreshold(1);
    m_ctrlComm2.SetInputLen(0);
    m_ctrlComm2.GetInput();
      

  10.   

    if(!m_ctrlComm2.GetPortOpen())
          m_ctrlComm2.SetPortOpen(true); // Open COM2
    else
    {
          //做一些处理,比如MessageBox("串口2已被占用");
          return ;
    }
      

  11.   

    恩, 谢谢 lfchen(一条晚起的虫) , 呵呵,问题解决了!小弟我还想问一个弱弱的问题:在 VC++6.0 里如何设置 Project 的编译环境?比如:本来我的程序是调用了 LIB 库的,我现在不用 LIB 库了,改成 DLL 动态链接。 如何改?? 请各位大哥指点小弟我一二啊! thanks ...
      

  12.   

    OK,还是关于最开始的那个串口通信的程序,现在串口的发送和接收数据都能正常了。不过,还有点不太好的地方,我想改改。CMSComm控件在发送数据和接收数据窗口显示时,都是使用了CString类型的变量。我能不能把发送数据和接收数据都改成 16 进制呢?该怎么进行转换呢?? 请各位大哥指点小弟我一二啊! thanks ...
      

  13.   

    下面的这段代码是实现串口数据的发送,m_strEditTXDATA 是定义的 CString 类型的变量。void CMy232DEMO1Dlg::OnButtonManualSend() 
    {
    // TODO: Add your control notification handler code here

    UpdateData(true);         
          m_ctrlComm.SetOutput(COleVariant(m_strEditTXDATA));      // send data    
    }发送的数据,比如:123, 到另外一个串口接收后,则是:0x31,0x32,0x33 。
    如何实现发送的数据由现在的字符型,改成 16 进制的发送呢?thanks ...
      

  14.   

    lfchen(一条晚起的虫),不是的吧?! 应该不是这么改的啊。我写的部分代码,如下:void CMy232DEMO1Dlg::OnRadioCOM1()      
    {
    // TODO: Add your control notification handler code here
    // 初始化 COM1
    m_ctrlComm.SetCommPort(1);           // USE COM1
    m_ctrlComm.SetInputMode(1);        
    m_ctrlComm.SetInBufferSize(1024);
    m_ctrlComm.SetOutBufferSize(1024);   
    m_ctrlComm.SetSettings("4800,n,8,1");     
    if(!m_ctrlComm.GetPortOpen())
        m_ctrlComm.SetPortOpen(true);     //  If COM1 Not Open, then Open COM1 
    m_ctrlComm.SetRThreshold(1);
    m_ctrlComm.SetInputLen(0);
    m_ctrlComm.GetInput();
    }void CMy232DEMO1Dlg::OnComm() 
    {
    // TODO: Add your control notification handler code here
    // 由COM1口接收数据,并在窗口中显示出来
    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    long len,k;
    byte rxdata[2048];
    CString strtemp;
    if (m_ctrlComm.GetCommEvent()==2)      
    {
                 variant_inp=m_ctrlComm.GetInput();    
       safearray_inp=variant_inp;
       len=safearray_inp.GetOneDimSize();     
       for (k=0;k<len;k++)
       safearray_inp.GetElement(&k,rxdata+k);       for (k=0;k<len;k++)              
       {
    BYTE bt=*(char*)(rxdata+k);      
    strtemp.Format("%c",bt);       
    m_strEditRXDATA+=strtemp;    
       }
    }
    UpdateData(false);
    }
    m_strEditRXDATA 是定义的 CString 类型的变量。void CMy232DEMO1Dlg::OnButtonManualSend() 
    {
    // TODO: Add your control notification handler code here

    UpdateData(true);         
          m_ctrlComm.SetOutput(COleVariant(m_strEditTXDATA));      // send data    
    }m_strEditTXDATA 是定义的 CString 类型的变量。发送的数据,比如:123, 到另外一个串口接收后,则是"123'这个字符串的ASCII:0x31,0x32,0x33 。如何实现发送和接收的数据由现在的字符型,改成 16 进制的呢?thanks ...
      

  15.   

    我是楼主,还是关于这个串口通信的程序。
    各位大哥大姐,我还是刚开始学用 VC++ 6 写程序,遇到了太多弱弱的问题,想提出来:我在程序里用到了combo box ,定义了一个下拉菜单,想用来选择通信的波特率。关于这个combo box 上,有很多的 message/events:CBN_CLOSEUP, CBN_DBLCLK, CBN_DROPDOWN, CBN_EDITCHANGE, CBN_EDITUPDATE, CBN_ERRSPACE, CBN_KILLFOCUS, CBN_SELCHANGE....等等, 我该为哪个message/events 添加我的程序代码呢?不明白这些message/events 的意思? 不像定义一个 BUTTON,也就单击和双击两个 message/events ,简单。哪位能提供一些关于这些控件(比如:IP Address,Combo BOX,LIST BOX....)的使用方法和部分程序代码的资料?给小弟我一些关于这方面的好的学习网站? 不胜感激啊! thanks ...
      

  16.   

    不用响应什么消息、和事件的定义一个combobox的控制变量直接得到你选的那个值的。我用过啊
      

  17.   

    CString s; 
    m_ctlBox.GetWindowText(s);s就是选的值
      

  18.   

    谢谢 hanlin382() 啊! 已经实现了,OK。我还有问题啊 :(   我现在又用到了IP address control,不知道怎么用。我怎么才能取到输入的IP地址的值呢?是不是和 Combo BOX的用法内似呢?? 请各位大哥指点小弟我一二啊! thanks ...
      

  19.   

    BYTE ip0, ip1, ip2, ip3;
    CIPAddressCtrl* pIP = (CIPAddressCtrl *)GetDlgItem(IDC_IP);
    pIP->GetAddress(ip0, ip1, ip2, ip3);
      

  20.   

    lfchen(一条晚起的虫), 谢谢。不好意思啊!可以另开一帖,再放分给你哦。 但我的问题还没问完啊我没有象你写的那样用,而是按照hanlin382() 写的类似用法。 定义一个m_ctrlipbox的控制变量,
    CString s; 
    m_ctrlipbox.GetWindowText(s);    // read ip address比如:我输入的IP地址为10.110.116.53,则s="10.110.116.53"。 现在又出现了新的问题,我怎么把="10.110.116.53"转成 0A6E7435的 16进制呢? thanks ...
      

  21.   

    0A6E7435 //字符串还是一个DWORD?
    CString s = "10.110.116.53";
    unsigned char a[4];
    sscanf(s, "%d.%d.%d.%d", a, a+1, a+2, a+3);