精华内容
下载资源
问答
  • MFC经典例程

    2018-07-05 10:30:20
    例程是一个简单的计算器,包括MFC的模态以及非模态对话框的创建,向导对话框、属性页对话框等
  • Visual C++ MFC 入门例程

    2009-08-11 18:46:59
    1.最简单MFC程序 2.演示如何从窗口中的控件上获取文字 3.基于MFC简单计算器。演示如何把用户输入的数据进行计算并显示出来 4.演示如何为对话框创建菜单并创建消息映射,以及如何捕获按键 5.演示如何在工程中拥有...
  • 系统环境:Win7 X64,开发软件:VS2010,语言:VC++ 利用Socket实现C/S架构简单通信,可实现双向收发信息,文件含客户端及服务器端完整工程,有界面。
  • MFC Table控件例程

    2011-05-08 10:13:55
    例程简单实现了MFC中Table控件的使用
  • MFC扩展DLL例程

    2018-07-18 13:02:54
    基于MFC做的扩展动态链接库,详细编写步骤看我的博客《MFC下DLL编程(图解)》
  • VS2010 MFC Socket通讯例程 ,实现简单的服务器与客户端实时收发数据,相当于一个简易板的聊天软件,很值得新手学习!
  • MFC多窗口例程

    热门讨论 2012-11-30 09:04:52
    简单MFC多对话框演示程序 “MultiDialog” 演示如何在工程中拥有多个对话框,及如何在一个对话框中调用另一个对话框。 重点:1、多个对话框类的建立;2、对话框的模式(Modal)调用方法;3、Spin控件的使用。 ...
  • [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程   (2014-05-07 15:42:01) 转载▼ 标签:  转载 分类: c/vc 原文地址:VS2008基于对话框的MFC上位机串口...

    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

      (2014-05-07 15:42:01)
    标签: 

    转载

    分类: c/vc
    首先,在 vs2008 环境下创建 MFC 运用程序
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步
    出现如下界面
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    选择“基于对话框”模式然后直接点击完成即可(其他选项按默认方式),点击完成后出现如下界面
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    解决资源管理器中自动给你生成好代码目录(可点击菜单栏“视图”选项打开解决方案资源管理器),如下图所示
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    我们再次回到对话框编辑窗口,删除自动生产的控件(静态文本控件、确定和取消按钮控件),并在工具箱里添加两个button按钮和编辑框,之后的界面如下图所示:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    然后把最重要的串口通信控件加入到工具箱中,因为默认的工具箱是不带 MS 串口通信控件的。添加方法如下:在工具箱界面点击鼠标右键出现如下界面:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    然后点击选择项出现如下界面,然后选择“COM 组件”
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    找到并选中该项
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    最后点击确定键,就成功添加 MS 串口通讯控件了,工具箱中就会出现串口控件图标了
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    我们吧串口控件添加到对话框里,位置随意,运行的时候是看不见的,所以最终界面是这样子的
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

    下面开始添加变量,首先IDC_MSCOMM1添加控制变量:m_ctrlComm,在串口通信图标上右键点击选择添加变量,如图:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    完成就可以了,控件ID和类别是可以选的,下面为按钮和编辑框添加变量时选不同的就行了。
    两个编辑框,一个用于接收显示数据ID设置IDC_EDIT_RXDATA(在控件属性框里设置),另一个用于输入发送数据,ID设置IDC_EDIT_TXDATA,两岸按钮,一个用于发送数据,将其ID设为IDC_BUTTON_MANUALSEND,另一个用于清空接收的编辑框,ID默认就行,不再赘述。

     接着添加变量,为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说 明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。方法同上面添加串口控制变量一样,选择控件ID和类型即可,如图:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    添加串口事件消息处理函数OnComm()
    回到对话框编辑界面,鼠标左键点击串口控件按钮,然后在对应的属性栏,点击闪电按钮(控件事件)
    展开全文
  • 首先,在 vs2008 环境下创建 MFC 运用程序 设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步 出现如下界面 选择“基于对话框”模式然后直接点击完成即可...
    首先,在
     vs2008 
    环境下创建
     MFC 
    运用程序
     
    
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    设置项目名称为  ComTest (这个地方随意命名,根据个人习惯),点击确定后, 点击下一步
    出现如下界面
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    选择“基于对话框”模式然后直接点击完成即可(其他选项按默认方式),点击完成后出现如下界面
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    解决资源管理器中自动给你生成好代码目录(可点击菜单栏“视图”选项打开解决方案资源管理器),如下图所示
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    我们再次回到对话框编辑窗口,删除自动生产的控件(静态文本控件、确定和取消按钮控件),并在工具箱里添加两个button按钮和编辑框,之后的界面如下图所示:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    然后把最重要的串口通信控件加入到工具箱中,因为默认的工具箱是不带 MS 串口通信控件的。添加方法如下:在工具箱界面点击鼠标右键出现如下界面:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    然后点击选择项出现如下界面,然后选择“COM 组件”
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    找到并选中该项
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    最后点击确定键,就成功添加 MS 串口通讯控件了,工具箱中就会出现串口控件图标了
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    我们吧串口控件添加到对话框里,位置随意,运行的时候是看不见的,所以最终界面是这样子的
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

    下面开始添加变量,首先 IDC_MSCOMM1 添加控制变量: m_ctrlComm ,在串口通信图标上右键点击选择添加变量,如图:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    完成就可以了,控件ID和类别是可以选的,下面为按钮和编辑框添加变量时选不同的就行了。
    两个编辑框,一个用于接收显示数据ID设置IDC_EDIT_RXDATA(在控件属性框里设置),另一个用于输入发送数据,ID设置IDC_EDIT_TXDATA,两岸按钮,一个用于发送数据,将其ID设为IDC_BUTTON_MANUALSEND,另一个用于清空接收的编辑框,ID默认就行,不再赘述。

     接着添加变量,为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说 明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。方法同上面添加串口控制变量一样,选择控件ID和类型即可,如图:
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    添加串口事件消息处理函数OnComm()
    回到对话框编辑界面,鼠标左键点击串口控件按钮,然后在对应的属性栏,点击闪电按钮(控件事件)
    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

    [转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
    添加串口事件消息处理函数,并将函数名改为OnComm,在上图中所示位置改就行。
    我们在OnComm()函数加入相 应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:

    void CSCommDlg::OnComm()
    {
    // TODO: 在此处添加消息处理程序代码
    VARIANT variant_inp;       
    COleSafeArray safearray_inp;       
    LONG len,k;     
    BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.       
    CString strtemp;       
    if(m_ctrlComm.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符       
    {                 
      以下你可以根据自己的通信协议加入处理代码 
                variant_inp=m_ctrlComm.get_Input(); //读缓冲区  
                safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
                len=safearray_inp.GetOneDimSize(); //得到有效数据长度           
       for(k=0;k<len;k++)                   
    safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组             
    for(k=0;k<len;k++)                              //将数组转换为Cstring型变量     
             {                
                   BYTE bt=*(char*)(rxdata+k);//字符型        
                   strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放    
    此处编译有错误,可在项目属性->配置属性->常规里将“字符集”改为使用多字节字符集即可
                   m_strRXData+=strtemp; //加入接收编辑框对应字符串        
               }
         }       
         UpdateData(FALSE); //更新编辑框内容 
    }


    打开串口和设置串口参数 
    你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的 CSCommTestDlg::OnInitDialog() 打开串口,找到 // TODO: Add extra initialization here,并在下面 加入如下代码:   

    // TODO: 在此添加额外的初始化代码
    m_ctrlComm.put_CommPort(5);
    //选择串口号5(笔记本没有串口,用的虚拟串口,可以使用软件vspd创建)
    m_ctrlComm.put_PortOpen(TRUE);
    //打开串口
    m_ctrlComm.put_RThreshold(2);
    //收到两个字节引发OnComm事件
    m_ctrlComm.put_InputMode(1);
    //输入模式选为二进制
    m_ctrlComm.put_Settings(_T("9600,n,8,1"));
    //设置串口参数,波特率,无奇偶校验,位停止位,位数据位
    m_ctrlComm.put_InputMode(1);   // 以二进制方式检取数据 
    m_ctrlComm.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 
    m_ctrlComm.put_InputLen(0); //设置当前接收区数据长度为0 
    m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据  

    发送数据
    先为发送按钮添加一个单击消息即BN_CLICKED处理函数,方法和串口事件控制函数的添加方法一样(只不过是在实践中的 OnBnClickedButtonManualsend里添加 ),不再赘述, 在函数中添加如下代码:

    // TODO: 在此添加控件通知处理程序代码
    UpdateData(TRUE);   //读取编辑框内容
    m_ctrlComm.put_Output(COleVariant(m_strTXData)); //发送数据

    运行程序,在发送编辑框中随意输入点什么,单击发送按钮,这时候在另一端的串口调试助手(或别的调试工具)接收框里就会有数据出现啦。

    最后那个“清除接收框”的按钮还没有用到,为它添加点击触发时间,在函数里添加如下代码即可:
    void CSCommDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    m_strRXData="";
    UpdateData(FALSE);
    }

    这样简单的串口通信就基本完成了。


    参考 http://blog.sina.com.cn/s/blog_b586ae640101py8d.html

    展开全文
  • VS2010基于对话框的MFC串口通信简明例程

    万次阅读 多人点赞 2015-04-28 20:57:19
    例程是在VS2010环境下,使用MFC做的是一个简单的串口通信程序。欢迎交流。 程序源码(含一个虚拟串口软件):http://download.csdn.net/detail/nnnnnnnnnnnny/8643049  1.首先,在VS2010环境下创建基于对话框的...

    本例程是在VS2010环境下,使用MFC做的是一个简单的串口通信程序。欢迎交流。

    程序源码(含一个虚拟串口软件):http://download.csdn.net/detail/nnnnnnnnnnnny/8643049 

    1.首先,在VS2010环境下创建基于对话框的MFC应用程序。

    a.选择菜单项 文件—>新建—>项目,弹出新建项目对话框。

    b.左侧面板中选择Visual C++下的MFC,中间窗口中选择MFC应用程序,然后在下面的名称编辑框中键入工程名称,本例取名SerialTest,在位置编辑框中设置工程的保存路径。点击确定

    c.在弹出的MFC应用程序向导中,点下一步应用程序类型界面,在应用程序类型下选择基于对话框,其他使用默认设置,点击完成

    2.接下来为对话框添加所需要的控件

    a.在资源视图的资源树中双击Dialog下的IDD_SERIALTEST_DIALOG,出现如下对话框编辑窗口(默认新建项目也是出现此界面,所以此步无需操作,仅作说明)


    b.选中控件Delete键删除自动生成的静态文本框TODO:在此放置对话框控件、按钮控件确定取消

    c.从右侧工具箱中添加两个Button按钮,两个Edit Control编辑框,一个StaticText静态文本框和一个Combo Box组合框。(提示:在工具箱中鼠标左键点下所需控件不放开,并拖到IDD_ADDITION_DIALOG对话框模板上,模板上会出现一个虚线框,我们找到合适的位置松开鼠标左键放下它,即可成功添加所需控件)。

    d.适当改变控件大小,并合理布局控件,使之如下图所示(提示:1.用鼠标左键选中控件后周围出现虚线框,然后鼠标移到虚线框上几个黑点的位置会变成双向箭头的形状,此时就可以按下鼠标左键并拖动来改变控件大小了。当然,整个对话框模板也可以用这种方法改变大小。2.几个控件的对齐等操作可按Ctrl键同时选中几个控件,然后选择软件左上侧工具条中的几个按钮进行操作)

    e.更改控件属性(选中控件,鼠标移至右侧属性,即出现该控件的属性面板):更改Button1Caption清除接收框、ID为IDC_BUTTON_CLEANUP Button2Caption发送数据IDIDC_BUTTON_SEND;下面的编辑框用于显示发送数据,ID设为IDC_EDIT_TXDATA; 下面的编辑框用于显示接收到的数据,ID设为IDC_EDIT_RXDATA;静态文本框的Caption选择COM口:;ComboBox ID设为IDC_COMBO_COMType属性设为DropList(即下拉列表式组合框,其编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本)Sort属性设为False,以取消自动排序显示。

    f.添加串口通信控件。首先把串口通信控件加入到工具箱中,因为默认的工具箱是不带 MS 串口通信控件的。方法如下:

    工具箱界面点击鼠标右键出现如下界面:


    选择选择项出现如下界面,然后选择COM组件属性页,勾选下图所示项,点击确定。


    这样串口控件就已经添加至工具箱了,


    将其拖入对话框里,如图所示(串口控件在运行时是看不到的)


    至此控件添加基本上就完成了。

    3.编写消息处理函数

    a. 给Combo Box组合框添加列表项。选中ComboBox控件,右键->添加变量,设置变量名为m_comboCom,如图所示,点击完成


    在左侧类视图面板中,选择CSerialTestDlg类,双击下方的OnInitDialog()函数进入CSerialTestDlg::OnInitDialog()函数


    //TODO:此添加额外的初始化代码添加如下代码

    // TODO: 在此添加额外的初始化代码
    	m_comboCom.AddString(_T("COM1")); // 为组合框控件的列表框添加列表项
    	m_comboCom.AddString(_T("COM2")); 
    	m_comboCom.AddString(_T("COM3")); 
    	m_comboCom.AddString(_T("COM4")); 
    	m_comboCom.AddString(_T("COM5")); 
    	m_comboCom.AddString(_T("COM6")); 
    	m_comboCom.AddString(_T("COM7")); 
    	m_comboCom.AddString(_T("COM8")); 
    	m_comboCom.AddString(_T("COM9")); 
    	m_comboCom.AddString(_T("COM10")); 

    b.我们希望在组合框中选中的列表项改变时,以打开相应串口并设置串口参数,那么这就要用到CBN_SELCHANGE通知消息。选中ComboBox右键->添加事件处理程序,出现如图所示界面,点击添加编辑


    CSerialTestDlg::OnCbnSelchangeComboCom()函数中添加代码之前我们需要给串口控件添加控制变量m_ctrlComm(方法见3.->a.),如图


    并在CSerialTestDlg中添加变量m_setOk(用于标记串口是否设置好),方法:在类视图面板中选中CSerialTestDlg右键->添加->添加变量,


    在弹出的界面中,选择访问private变量类型bool变量名m_setOk。这里看到SerialTestDlg.h中已经添加了此变量,并在构造函数中已进行了初始化:



    现在我们回到CSerialTestDlg::OnCbnSelchangeComboCom()中,添加如下代码:

    void CSerialTestDlg::OnCbnSelchangeComboCom()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	int nSel;
    	nSel = m_comboCom.GetCurSel();//获取组合框控件的列表框中选中项的索引
    
    	m_ctrlComm.put_CommPort(nSel+1);//选择串口号(这里因为列表框的索引号是从0开始,所以(nSel+1)对应的才是我们所选的串口号)
    	m_ctrlComm.put_PortOpen(TRUE);//打开串口
    	m_ctrlComm.put_RThreshold(2);//收到两个字节引发OnComm事件	
    	m_ctrlComm.put_InputMode(1);//输入模式选为二进制	
    	m_ctrlComm.put_Settings(_T("9600,n,8,1"));//设置串口参数,波特率,无奇偶校验,位停止位,位数据位
    	m_ctrlComm.put_InputMode(1);  // 以二进制方式检取数据 
    	m_ctrlComm.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 
    	m_ctrlComm.put_InputLen(0); //设置当前接收区数据长度为0 
    	m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据  
    
    	m_setOk = true;		//标记串口设置OK
    }

    c.添加串口事件消息处理函数。在此步之前,我们先给IDC_EDIT_TXDATA编辑框添加CString变量m_strTXDataIDC_EDIT_TXDATA编辑框添加CString变量m_strRXData(方法见3.->a.,注意变量类型改为CString类别改为Value


    然后我们添加串口消息事件处理函数(方法见3.->b.),并将函数改名为OnComm


    在CSerialTestDlg::OnComm()函数中添加如下代码:

    void CSerialTestDlg::OnComm()
    {
    	// TODO: 在此处添加消息处理程序代码
    	VARIANT variant_inp;   //Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据。
    	COleSafeArray safearray_inp;     
    	LONG len,k;    
    	BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integer that is not signed.     
    	CString strtemp;     
    	if(m_ctrlComm.get_CommEvent() == 2) //事件值为2表示接收缓冲区内有字符     
    	{            
    		以下你可以根据自己的通信协议加入处理代码 
    		variant_inp=m_ctrlComm.get_Input();		//读缓冲区  
    		safearray_inp=variant_inp;				//VARIANT型变量转换为ColeSafeArray型变量
    		len=safearray_inp.GetOneDimSize();		//得到有效数据长度        
    		for(k=0;k<len;k++)             
    			safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组         
    		for(k=0;k<len;k++)                    //将数组转换为Cstring型变量    
    		{           
    			BYTE bt=*(char*)(rxdata+k);//字符型      
    			strtemp.Format(_T("%c"),bt); //将字符送入临时变量strtemp存放   
    			m_strRXData+=strtemp; //加入接收编辑框对应字符串      
    		}
    	}     
    	UpdateData(FALSE); //更新编辑框内容 
    }

    d.添加发送数据按钮的BN_CLICKED消息的处理函数(方法见3.->b.),


    在CSerialTestDlg::OnBnClickedButtonSend()中添加如下代码:

    void CSerialTestDlg::OnBnClickedButtonSend()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	if (m_setOk == true)	//判断是否打开并初始化串口
    	{
    		UpdateData(TRUE);  //读取编辑框内容
    		m_ctrlComm.put_Output(COleVariant(m_strTXData)); //发送数据
    	} 
    	else
    	{
    		MessageBox(_T("请先选择COM口"));
    	}
    }

    e.同理,添加清楚接收框按钮的BN_CLICKED消息的处理函数(方法见3.->b.),

    CSerialTestDlg::OnBnClickedButtonCleanup()中添加如下代码:

    void CSerialTestDlg::OnBnClickedButtonCleanup()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	m_strRXData="";
    	UpdateData(FALSE);//更新编辑框内容 
    }

    4.生成可执行代码

    a.点击启动调试按钮或摁F5,编译成功


    b.点击菜单栏生成->配置管理器


    活动解决方案配置下拉菜单中选择Release,点击关闭


    再次编译,即可看到在目录中生成了的Release文件夹下生成了.exe文件。


    5.检测软件是否能正常工作,

    a.这里首先要下一个虚拟串口。下载地址:http://www.cr173.com/soft/21406.html(也可在文首提供的连接处下载)

    安装完成后,打开软件


    虚拟串口COM3和COM5:在右侧端口一、二分别改为COM3和COM5,点击添加端口。


    b.然后打开两个刚才生成的.exe文件,分别选择COM3和COM5。


    分别在发送数据的编辑框里随便输入几个字符,点击发送数据


    成功。
























    展开全文
  • 基于visual c++的串口通讯界面设计
  • VS2010基于对话框的MFC串口通信简明例程的源码,内涵一个虚拟串口软件。 VS2010基于对话框的MFC串口通信简明例程的源码,内涵一个虚拟串口软件。
  • VS2008上位机串口通信简单例程

    热门讨论 2012-06-13 09:29:40
    超详细的利用VS2008一步一步打造上位机串口通信软件的简单例程,步骤详细,并配有图片解说,相关源代码,绝对是不可多得的串口入门级的教程,看完此篇文档,我相信你也能写出属于你自己的串口软件!
  • VC++ windows API 串口编程简单例程

    热门讨论 2009-08-25 21:18:00
    VC++ windows API 串口编程简单例程,适合入门学习API串口编程
  • MFC简单网络编程例

    2009-11-13 11:57:21
    MFC简单网络编程例,Socket编程,非常简单的,适合初学的,这是我学习时自己写的
  • 用VC2008的MFC开发的简单例程,自动生成ribbon风格,对于在VS2008下开发MFC程序的新手来说,是个不错的参考资料。
  • 本资源是基于MFC集合类中链表类CList的简单应用,适用于VC++编程开发小白使用,对于加深对MFC集合类的理解很有帮助!
  • 例程在vs2017环境下,实现了对TeeChart控件的简单操控,详情请参考博客https://blog.csdn.net/qq_40435493/article/details/105330608
  • 研究CEF3中自带的两个例程中的CEFSimple(简单例程

      上回分解到从CEF官网下载最新版的CEF3并使用CMake将其制作成适合我们VS版本的工程,这回我们开始研究CEF3中自带的两个例程中的CEFSimple(简单例程)。

    CEF中的例程是基于win32程序的,没有使用MFC,使我们更容易看清楚CEF3的初始化应用过程。我使用的是CEF3的3.2171.1979_windows32版本。


    // Entry point function for all processes.
    int APIENTRY wWinMain(HINSTANCE hInstance,
                          HINSTANCE hPrevInstance,
                          LPTSTR    lpCmdLine,
                          int       nCmdShow) {
      UNREFERENCED_PARAMETER(hPrevInstance);
      UNREFERENCED_PARAMETER(lpCmdLine);
    
      void* sandbox_info = NULL;
    
    #if defined(CEF_USE_SANDBOX)
      // Manage the life span of the sandbox information object. This is necessary
      // for sandbox support on Windows. See cef_sandbox_win.h for complete details.
      CefScopedSandboxInfo scoped_sandbox;
      sandbox_info = scoped_sandbox.sandbox_info();
    #endif
    
      // Provide CEF with command-line arguments.
      CefMainArgs main_args(hInstance);
    
      // SimpleApp implements application-level callbacks. It will create the first
      // browser instance in OnContextInitialized() after CEF has initialized.
      CefRefPtr<SimpleApp> app(new SimpleApp);
    
      // CEF applications have multiple sub-processes (render, plugin, GPU, etc)
      // that share the same executable. This function checks the command-line and,
      // if this is a sub-process, executes the appropriate logic.
      int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
      if (exit_code >= 0) {
        // The sub-process has completed so return here.
        return exit_code;
      }
    
      // Specify CEF global settings here.
      CefSettings settings;
    
    #if !defined(CEF_USE_SANDBOX)
      settings.no_sandbox = true;
    #endif
    
      // Initialize CEF.
      CefInitialize(main_args, settings, app.get(), sandbox_info);
    
      // Run the CEF message loop. This will block until CefQuitMessageLoop() is
      // called.
      CefRunMessageLoop();
    
      // Shut down CEF.
      CefShutdown();
    
      return 0;
    }

    void* sandbox_info = NULL;
    设置沙箱指针,沙箱据说是用来隔离层与层的接口的,起安全作用,具体什么我也不清楚。有知道的同学可以详细给我解释一下不?不过我们设成NULL 也挺好。下面的#if define就是看你是否启用沙箱模式的开关了。
    </pre><pre name="code" class="cpp">CefMainArgs main_args(hInstance);
    获取程序启动时的参数。
    </pre><pre name="code" class="cpp">CefRefPtr<SimpleApp> app(new SimpleApp);
    创建CEF3主实例的回调类
    </pre><pre name="code" class="cpp"> int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
    CEF3有多个线程,这一句将多个线程统一到主实例的过程中。

     
    
    </pre><pre name="code" class="cpp"> CefSettings settings;
     CefInitialize(main_args, settings, app.get(), sandbox_info);
    这里就是初始化CEF了,settings中可以设置一些初始化的参数,具体参见CEF3的API文档
    
      CefRunMessageLoop();
    开始主程序和CEF3的消息循环。
    </pre><pre name="code" class="cpp"> CefShutdown();
    结束所有CEF3的线程。
    程序结束并不会关闭所有CEF3的线程,所以必须调用这一句来关闭所有CEF3启动的线程,程序才会完全 退出。
    是不是很简单?其实很多细节,一个没处理好就会出问题,唉。下一节我们开始研究将复杂例子应用到MFC中去。

     
    
     
    
     
    
     
    
     
    

    展开全文
  • MFC写的基于Socket的TCP通讯例程

    热门讨论 2012-02-05 20:16:22
    MFC写的基于Socket的TCP通讯例程简单易懂,方便自己以后寻找。
  • 参考教程:https://blog.csdn.net/a_runing_man/article/details/9947343注意:这个例程的波特率和串口号都是在代码里固定的,需要自己修改 =。=!自己动手一遍,大概可以理解消息映射,成员变量的机制...
  • 学习补充资料:孙鑫MFC笔记教程(17)--进程间通信2(命名管道) https://blog.csdn.net/liufei_learning/article/details/5060281 命名管道的使用步骤 服务器端: 1):服务器进程调用CreateNamedPipe函数来...
  • CommUtils 类 mCommUtils 对象
  • 采用最简单的形式,演示了3种常用控制条的用法。 CDialogBar CToolBar CStatusBar
  • C++创建简单窗口例程(Win32 API应用)-非MFC

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,790
精华内容 3,116
关键字:

mfc简单例程