
MFC编程
文章平均质量分 72
棉猴
这个作者很懒,什么都没留下…
展开
-
VS2015 MFC组合框控件
MFC中的组合框控件用CComboBox类来表示。该控件可以看作是列表控件和编辑框控件的组合。一般情况下,在列表框中选择了某项之后,该项的内容会在文本框中显示出来。原创 2017-08-09 10:09:57 · 5979 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(6)
(2)套接字的Select模型Select模型是套接字中最常见的模型。它的核心是利用select()函数实现套接字的输入输出管理。利用select()函数,应用程序可以判断指定套接字上是否存在数据,如果套接字上存在数据,则调用recv()函数进行接收;还可以通过该函数判断能否向指定套接字上发送数据,即指定套接字是否已经准备好接收数据,如果已经准备好,则调用send()函数发送数据。在使用S原创 2017-11-06 22:42:50 · 647 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(7)
2.3.6 创建接收客户端数据的线程为CTCPSocket_Server类添加访问权限为private的成员函数Newconnect(),在该函数中调用CreateThread()函数创建接收客户端数据的线程。int index = m_client_currentindex;m_recvdata_threadhandle_array[index] = CreateThread(NULL原创 2017-11-06 22:45:20 · 470 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(8)
4 停止服务器为CTCPSocket_Server类添加访问权限为public的成员函数StopServer()。在该函数中主要完成的工作是关闭“2.3 StartServer()函数”中提到了用于接受客户端连接的线程和用于接收客户端数据的线程。4.1 结束接受客户端连接的线程在“2.3 StartServer()函数”中提到,该线程由CTCPSocket_Server类的成员变量原创 2017-11-06 22:48:03 · 475 阅读 · 0 评论 -
VS2005、VS2008为类添加成员时显示 “length”为空或不是对象的处理方法
在VS2005和VS2008中,为类添加成员变量和成员函数时,可以通过选择“类视图”,之后在选中类的右键菜单中选择“添加->添加函数/添加变量”实现,如图1所示。图1 为类添加成员有时在添加成员变量和成员函数时会弹出“网页错误”的对话框,显示错误信息为“错误:’ParameterType.Value.length’为空或不是对象”,如图2所示。图2 报错信息1 产生原创 2017-10-23 23:09:14 · 2182 阅读 · 0 评论 -
查看MFC类函数源代码的方法
可以通过三种方法查看MFC类函数的代码。第一种是通过Visual Studio的“对象浏览器”实现;第二种是通过“Virsual Assiat X”插件实现;第三种是在调试时实现。1 过Visual Studio的“对象浏览器”实现通过“对象浏览器”可以查看应用程序的类。在通过对象浏览器查看MFC类函数的源代码时,需要导入mfc.bsc文件。1.1 mfc.bsc文件所在路径该文件原创 2017-10-25 22:38:10 · 6050 阅读 · 0 评论 -
MFC导入图标文件的方法
可以使用两种方法导入图标文件,一种是从项目资源中导入,另一种是从磁盘中导入。1 从项目资源中导入图标使用该方法导入图标文件时,必须先将图标文件导入到项目资源中。1.1 图标文件资源的导入选择“资源视图”选项卡,之后选择资源视图树型控件的“XXX->XXX.rc->Icon”,其中XXX表示项目名称,如图1所示。 图1 选择Icon资源文件夹接下来在右键菜单中选择“添原创 2017-12-13 22:49:34 · 9377 阅读 · 0 评论 -
MFC导入位图的方法
可以使用两种方法导入位图文件,一种是从项目资源中导入,另一种是从磁盘中导入。1 从项目资源中导入位图使用该方法导入位图文件时,必须先将位图文件导入到项目资源中。1.1 位图资源的导入导入位图资源的方法与导入图标资源的方法类似,见《MFC导入图标文件的方法》。1.2 通过::LoadBitmap()函数获取位图句柄可以通过Windows API函数LoadImage()来获位原创 2017-12-13 22:52:55 · 9102 阅读 · 0 评论 -
MFC显示JPG格式的图片(2-1)
在MFC中,可以通过图像接口IPicture来显示JPG格式的图片。主要分为四个步骤:第一步是将JPG图片导入到内存中,第二步是创建流接口对象;第三步是根据流对象创建图像接口对象,第四步是显示图片。 1 将JPG图片导入到内存中在VS2008中创建一个基于对话框的MFC程序。在该对话框类的OnInitDialog()函数中,使用CFile类和全局内存函数将JPG图片导入到内存中原创 2017-12-13 22:56:39 · 1677 阅读 · 0 评论 -
MFC显示JPG格式的图片(2-2)
3 创建图像接口对象3.1 声明图像接口对象IPicture表示图像接口,为对话框类创建一个访问权限为private的IPicture接口的指针:IPicture* m_pPicture;3.2 创建图像接口对象之后,在对话框类的OnInitDialog()函数中,通过如下代码创建图像对象接口:OleLoadPicture(stream, length, TRUE原创 2017-12-13 23:00:32 · 629 阅读 · 0 评论 -
MFC显示位图(2-1)
在MFC中可以通过Picture Control控件显示位图,也可以通过CBitmap类显示位图。1 通过Picture Control控件显示位图Picture Control控件实际上就是静态控件,即CStatic类。可以通过该控件的属性或者对该控件的成员变量,实现位图的显示。1.1 通过设置控件属性显示位图在VS2008中创建一个基于对话框的MFC程序。1.1.1 创建控原创 2017-12-13 23:10:49 · 1538 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(5)
2.3.4 创建新线程接收连接在定义了线程函数之后,回到CTCPSocket_Server类的StartServer()函数中。接下来通过CreateThread()函数创建ThreadFunc_StartServer()的线程,接受来自客户端的连接。(1)CreateThread()函数该函数的作用是创建新线程,其格式为HANDLE WINAPI CreateThread(原创 2017-11-06 22:39:36 · 428 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(4)
(1)循环接收连接在“1.4 监听套接字”中提到,服务端调用listen()函数等待客户端连接。当有客户端连接服务端时,就需要调用accept()函数接收客户端的连接。为了使服务端能够接受多个客户端的连接,需要在while()循环中调用accept()函数。为了能够在主程序中控制线程,将CTCPSocket_Server类的一个bool类型的成员变量m_acceptthread_alive原创 2017-11-06 22:35:34 · 1027 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(3)
2 启动服务器启动服务器的主要动作就是创建一个新线程,在该线程中接收来自客户端的连接。为CTCPSocket_Server类添加public权限的成员函数StartServer(),用于启动服务器。当接收了客户端连接后,如果程序需要在主窗口中显示该客户端的信息,则需要在StartServer()中调用主窗口的函数,这就要用到回调函数。在CTCPSocket_Server类中定义函数指针的成员变原创 2017-11-06 22:31:03 · 534 阅读 · 0 评论 -
编辑框CEdit的EN_CHANGE通知消息
编辑框控件给其父窗口发送消息来报告多种输入事件。在MFC应用程序中使用ON_EN消息映射宏将这些通知传递给了处理函数。原创 2017-08-02 21:43:16 · 15498 阅读 · 7 评论 -
MFC界面美化之工具栏(1)
一、工具栏的美化(一)工具栏显示文字文档/视图默认的工具栏上只有图标而没有文字。可以将文字在图标下方显示,也可以将文字在图标右侧显示。1 在图标下方显示文字在CMainFrame::OnCreate()函数中,在工具栏创建之后,也就是m_wndToolBar.CreateEx()函数成功调用之后,首先调整工具栏上按键的大小,之后指定工具栏按键显示的文字。(1)调整工具栏按键的大原创 2016-12-12 11:17:45 · 3483 阅读 · 0 评论 -
MFC中CFileDialog类
CFileDialog类用来创建“打开文件”对话框或者“另存为”对话框,如图1所示。 图1 “打开文件”对话框CFileDialog类派生自CCommonDialog类,CCommonDialog类派生自CDialog类。1 CFileDialog对话框的显示通过CFileDialog类的构造函数实现对象的创建。1.1 CFileDialog类的构造函数CFileDia原创 2017-09-06 21:07:32 · 1448 阅读 · 0 评论 -
MFC中窗口实现拖拽文件功能
MFC窗口拖拽文件功能指的是用鼠标将文件拖拽入窗口后,在窗口中可以获取拖拽文件的绝对路径,如图1所示。图1 文件拖拽功能实现窗口的拖拽文件功能,首先要将窗口注册为放置拖拽文件的目标,之后在窗口中响应拖拽消息,获取拖拽文件的绝对路径。1将窗口注册为放置文件的目标将窗口注册为放置文件目标的方法有两种:一种是通过MFC资源编辑器实现,另一种方法是通过代码实现。1.1通过M原创 2017-09-25 21:59:28 · 6625 阅读 · 3 评论 -
MFC中进度控件的基本用法
MFC用CProgressCtrl类来表示进度控件。在默认方式下,进度条控件沿水平方向放置,进度用一系列的方块来表示。1 进度控件的创建可以通过两种方法创建进度控件,一种是在Visaul Studio的资源编辑器中通过工具箱添加;另一种是通过代码添加。1.1 在资源编辑器中添加一般基于对话框的MFC程序中,使用资源编辑器的方式来添加进度控件。在“资源视图”中打开对话框资源,之后在右原创 2017-09-27 21:56:41 · 3868 阅读 · 0 评论 -
MFC中使用任务栏显示图标表示程序
在任务栏中通过图标表示应用程序,就是当按下应用程序窗口的最小化按键时,隐藏窗口,并在任务栏中显示图标表示该应用程序;当鼠标点击了任务栏中的图标时,显示窗口,并删除任务栏中的图标。1 在任务栏中显示图标通过NOTIFYICONDATA结构和Shell_NotifyIcon()函数实现图标的显示。1.1 NOTIFYICONDATA结构该结构包含了系统所需的进程任务栏状态区域消息。该结原创 2017-09-29 05:58:47 · 3524 阅读 · 0 评论 -
VS2015单文档视图项目中文档、框架以及视图创建过程
在VS2015中,创建一个基于单文档视图的MFC项目,该项目的名称为MFCApplication。通过向导成功创建项目之后发现,自动生成了很多文件。在这些文件中,MFCApplicationDoc.cpp和MFCApplictionDoc.h对应的是项目的文档类;MainFrm.cpp和MainFrm.h对应的是项目的框架类;MFCApplicationView.cpp和MFCApplicatio原创 2017-10-17 22:36:50 · 3614 阅读 · 0 评论 -
MFC中使用任务栏显示图标表示程序最小化
在任务栏中通过图标表示应用程序,就是当按下应用程序窗口的最小化按键时,隐藏窗口,并在任务栏中显示图标表示该应用程序;当鼠标点击了任务栏中的图标时,显示窗口,并删除任务栏中的图标。1 在任务栏中显示图标通过NOTIFYICONDATA结构和Shell_NotifyIcon()函数实现图标的显示。1.1 NOTIFYICONDATA结构该结构包含了系统所需的进程任务栏状态区域消息。该结原创 2017-10-09 22:40:22 · 1773 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(1)
C/S(Client/Server)结构的网络软件分为客户端和服务端。客户端和服务端担任不同的任务。一般来说,客户端将用户的需求提交给服务端,再将服务端返回的结果以一定形式提供给用户。服务端的任务是接收客户端的服务请求,进行响应处理,并将结果返回给客户端。本文提到的服务端的流程如图1所示。在服务端的主线程中创建接受客户端连接的线程,在该线程中创建多个接收客户端数据的线程用来与多个客户端进行通信原创 2017-11-06 22:11:41 · 1412 阅读 · 0 评论 -
MFC基于select模型的套接字类之服务器(2)
1.3 绑定套接字通过bind()函数绑定套接字,该函数的格式为int bind(SOCKET s, const struct sockaddr* name, int namelen);其中,参数s表示要绑定的套接字;name是要绑定的套接字地址;namelen是name的大小。如果绑定套接字成功,则返回值为0,否则返回SOCKET_ERROR。1.3.1 sockaddr_in与so原创 2017-11-06 22:25:42 · 583 阅读 · 0 评论 -
MFC显示位图(2-2)
2 通过CBitmap类显示位图通过CBitmap类显示位图的基本原理是将要显示的位图导入到CBitmap对象中,之后将该对象选入到兼容设备上下文(DC)中,最后将兼容设备上下文在设备上下文中显示。需要注意的是显示位图的代码要写在对话框程序的OnPaint()函数中。2.1 将要显示的位图导入到CBitmap对象中在OnPaint()函数中,定义一个CBitmap类的对象,并且将要显示原创 2017-12-13 23:13:39 · 579 阅读 · 0 评论