MFC
piaopiaopiaopiaopiao
这个作者很懒,什么都没留下…
展开
-
SHGetFileInfo获取系统图标注意事项
SHGetFileInfoA这个版本的函数,你的第一个参数可以设置为 NULL,仍然可以得到ImageList,但是宽字符版本SHGetFileInfoW不能使用NULL,必须为L""。两个版本统一方法为:SHFILEINFO sfi;HIMAGELIST sys_small_icon;sys_small_icon=(HIMAGELIST)SHGetFileInfo(_T(""),0,原创 2014-12-28 15:43:10 · 2227 阅读 · 0 评论 -
Invalidate(TRUE)与Invalidate(FALSE)区别
使用Invalidate(TRUE)函数时,它会向消息队列中添加了WM_ERASEBKGND和WM_PAINT两个消息。使用Invalidate(FALSE)函数时,它只会向消息队列中添加了WM_PAINT消息。WM_ERASEBKGND消息的作用以背景色填充客户区,因此他会将之前绘制的图像情况,然后响应WM_PAINT消息后,会调用OnPaint函数,进行响应图像绘制工作。故Invali原创 2014-11-26 20:49:57 · 3177 阅读 · 0 评论 -
DateTimePicker控件使用方法
使用DateTimePicker控件一般是获 取其时间替代手工输入带来的不便,而DateTimePicker控件既可以获取日期(2010-03-05)也可以获取时间(16:27:33),要获 取日期只需要更改控件属性的格式为长日期或短日期,要获取时间则将格式更改为时间即可! 在添加控件变量时,选择其变量类型为CDateTimeCtrl(类如m_DateCtrl);在程序中定转载 2014-11-23 11:38:44 · 6370 阅读 · 0 评论 -
窗口风格的实际效果
窗口风格对窗口有很多影响,我先简单将一些使用常见窗口风格的结果,展现如下。我们知道WS_BORDER Creates a window that has a border.WS_DLGFRAME Creates a window with a double border but no title.转载 2014-11-26 10:09:44 · 569 阅读 · 0 评论 -
双缓冲技术
理解:通常我们进行绘图时,都是直接使用CDC(CPaintDC等)对象在屏幕上绘制图形,如我们经常在OnPaint函数中使用:CPaintDC dc(this);dc.Rectangle(0,0,100,100);在屏幕上绘制矩形。但如果应用需要频繁的绘制图形,比如每秒要在屏幕上绘制1000个矩形。因此每绘制一个矩形到屏幕上显示,由于屏幕频繁的更新操作会导致闪烁现象。如何解决呢?使原创 2014-11-26 16:51:54 · 690 阅读 · 0 评论 -
窗口位置、大小设置
一:SetWindowPosBOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);理解:参数pWndInsertAfter决定窗口位于那一层,是在顶层还是在底层,窗口位置由点(x,y)决定,窗口宽高由cx,cy决定。参数nFlags决定进行不同的操作,如SWP_NOMOVE是原创 2014-11-25 22:44:43 · 6255 阅读 · 0 评论 -
GDI使用方法小结(二)
一:设置文本颜色dc.SetTextColor原创 2014-11-25 14:51:11 · 614 阅读 · 0 评论 -
GDI绘制填充图一
一:void FillRect(LPCRECT lpRect, CBrush* pBrush);用原创 2014-11-23 22:52:58 · 5282 阅读 · 0 评论 -
MFC学习笔记一
1. 修改对话框颜色原创 2014-11-08 10:35:02 · 560 阅读 · 0 评论 -
MFC之Hello World
头文件hello.h原创 2014-11-07 18:36:58 · 605 阅读 · 0 评论 -
winsock编程
一:TCPServer端:原创 2014-08-15 21:20:29 · 536 阅读 · 0 评论 -
MFC下CSocket编程详解
1. 常用的函数和注意事项(详细的函数接口说明请查看MSDN): CSocket::Create 初始化(一般写服务器程序都不要用为好,用下面的 CSocket::Socket 初始化) CSocket::Socket初始化 CSocket::SetSockOpt 设置socket选项 CSocket::Bind 绑定地址端口 C转载 2014-08-16 09:51:31 · 578 阅读 · 0 评论 -
拖动窗口,如何防止控件闪动
基于MFC对话框的程序,当对话框边框拖动改变大小时,原创 2014-08-13 21:05:02 · 1845 阅读 · 0 评论 -
if!defined与pragma once
两者的共同点都是为了避免同一个文件被include多次,但是各有千秋。在用VC6.0向导生成的头文件中,经常可以看见如下的代码段: #if !defined(AFX_RESIZABLELAYOUT_H__INCLUDED_) #define AFX_RESIZABLELAYOUT_H__INCLUDED_ #if _MSC_VER > 1000 #pragma on转载 2014-06-21 18:59:36 · 631 阅读 · 0 评论 -
visual c++.net 技术内幕 第6版 附带的程序如何在vs2013中编译成功
看vc++技术内幕时 如果你使用的是比此书的附带项目更新版的vs时千万不要使用这种方法,这些对编译都有影响。请使用当前新版的vs并输入书中改动的代码就Ok,因为vs会生成合理的mfc代码,养成好的习惯,, 一开始编译,第一个错误提示[plain] view plaincopyprint?Building an MFC project转载 2014-07-12 10:49:56 · 1198 阅读 · 0 评论 -
MFC学习笔记(八)
MAKELONG()函数做什么用原创 2014-06-22 14:40:17 · 747 阅读 · 0 评论 -
GDI使用方法小结(一)
一:获取DCCDC* GetDC();原创 2014-11-23 17:11:13 · 1117 阅读 · 0 评论 -
CBitmap、HBITMAP、BITMAP相互转换
一:理解BITMAP是C++中定义的位图结构体HBITMAP是Windows编程中使用的位图句柄CBitmap是MFC封装的位图类二:相互转换原创 2014-11-27 21:41:41 · 2534 阅读 · 0 评论 -
GDI绘图函数小结
一:RoundRectBOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);原创 2014-11-23 20:33:54 · 926 阅读 · 0 评论 -
创建菜单Menu
步骤:一、在资源中插入菜单资源(ID为:IDR_MENU1):二、添加右键单击处理函数OnRButtonDown,函数代码为:void CaaDlg::OnRButtonDown(UINT nFlags, CPoint point){ CMenu menu; CMenu* pPopupMenu; menu.LoadMenu(IDR_MENU1); pPopupMen原创 2014-12-02 21:08:04 · 1627 阅读 · 0 评论 -
最小化到托盘
本文将演示点击最小化按钮时,将程序最小化到托盘。一、创建一个对话框的MFC应用程序二、为对话框类添加WM_SIZE消息响应函数void CddDlg::OnSize(UINT nType, int cx, int cy){ CDialogEx::OnSize(nType, cx, cy); if (nType==SIZE_MINIMIZED) { NOTIFYICONDAT原创 2014-12-04 09:49:32 · 1265 阅读 · 0 评论 -
DoDataExchange()
对于这个函数,MSDN是这样描述的:Called by the framework to exchange and validate dialog data.大意是框架调用此函数来改写与确认对话框数据。 反正我没明白这句话的意思。 到是看了下DoDataExchange函数里的DDX型函数,似乎明白了DoDataExchange函数的作用。最近看书的效果很明显哇。按我的理解,DoD转载 2014-12-08 16:42:23 · 794 阅读 · 0 评论 -
退出MFC应用程序的方法集
每次自己写程序退出的函数时,总要找好长时间。这次搜集了一些,记录下来。不端更新下去1、PostQuitMessage(0);//最常用2、PostMessage(WM_QUIT,0,0);//最常用3、::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用::PostMessage(AfxGetMainWnd()-转载 2014-12-08 10:34:30 · 3119 阅读 · 0 评论 -
MFC生成exe文件图标更改方法
创建或打开工程Icon(以下都以工程名为Icon为例) 单击Workspace窗口的ResourceView标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉。注意:一定要把它删除才行。 从Developer Studio的Insert菜单中选择Resource,然后选择Icon,新建(New)一个新的图标或导入(Import)一个已有的图标。转载 2014-12-04 22:43:35 · 631 阅读 · 0 评论 -
如何更改MFC程序图标
方法一:找一张ICO图标,替换programname/res/programname.ico文件,就可以啦,这时候你运行后得到的图标可能还是原来MFC的默认图标,这时候你只要把工程目录下的Debug和Release文件删除掉,重新编译生成就能得到更换图标后的程序。或者直接RebuildAll,再运行,怎么样很简单吧。当然,你如果你在你的工程里操作也没有问题,在工作区的resorce页中的Ico转载 2014-12-03 22:43:22 · 1052 阅读 · 0 评论 -
全屏显示
一:创建单文档MFC应用程序,在CMainFrame类的OnCreate函数中添加代码:CRect rectClient;CRect rectWindow;GetWindowRect(&rectWindow);//方法一RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&rectClient); //方法二//GetClie原创 2014-12-03 20:17:08 · 738 阅读 · 0 评论 -
工具栏的创建与RepositionBars
一:工具栏的创建CToolBar m_tbar;m_tbar.Create(this,WS_CHILD | WS_VISIBLE | CBRS_TOP,123);在资源视图中创建一个工具栏资源,ID为:IDR_TOOLBAR1m_tbar.LoadToolBar(IDR_TOOLBAR1);注意:工具栏创建的过程中使用了两个ID(分别为123,IDR_TOOLBAR1)。而原创 2014-12-03 21:08:26 · 1547 阅读 · 0 评论 -
AfxBeginThread创建线程
用户界面线程和工作者线程都是由AfxBeginThread创建的。MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一个用于工作者线程,分别有如下的原型:用户界面线程的AfxBeginThread的原型如下:CWinThread* AFXAPI AfxBeginThread( CRuntimeClass* pThreadClass, int nPri原创 2014-12-02 12:20:14 · 1468 阅读 · 0 评论 -
PlaySound与CFileDialog
一:PlaySoundBOOL PlaySound(LPCSTR pszSound, HMODULE hwnd,DWORD fdwSound);需要使用:#include #pragma comment(lib, "WINMM.LIB")二:CFileDialog要使用CFileDialog,先用CFileDialog构造函数构造一个对象,当创建了一个对话框后,可以原创 2014-12-01 20:27:54 · 638 阅读 · 0 评论 -
用户界面线程AfxBeginThread的使用
用户界面线程在运行时会有一个窗口界面和与其相对应的窗口函数,所以它可以通过响应消息来和用户进行交互。AfxBeginThread 函数原型如下:CWinThread *AfxBeginThread( CRuntimeClass *pThreadClass, //从CWinThread派生的RUNTIME_CLASS类 int nPrior转载 2014-12-01 22:42:47 · 1384 阅读 · 0 评论 -
MFC控件的绘制与响应顺序——ZOrder
1. 创建4个按钮CRect rcCreate(0,0,80,80);m_btTest1.Create(TEXT("Test1"),WS_CHILD|WS_VISIBLE,rcCreate,this,114);m_btTest2.Create(TEXT("Test2"),WS_CHILD|WS_VISIBLE,rcCreate,this,112);m_btTest3.Cre转载 2014-11-25 22:45:47 · 741 阅读 · 0 评论 -
GDI绘制填充图二
一:填充区域函数原创 2014-11-24 20:59:50 · 2419 阅读 · 0 评论 -
GDI图像显示
一:BitBlt函数显示位图BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC,int xSrc,int ySrc,DWORD dwRop);调用形式:dc.BitBlt(x,y,nWidth,nHeight,pSrcDC,xSrc,ySrc,dwRop);理解:pSrcDC(内存)中含有一张位图,dwRop原创 2014-11-25 20:43:13 · 2912 阅读 · 0 评论 -
透明位图的显示(TransparentBlt函数)
包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。一、TransparentBlt 函数的使用 TransparentBlt 函数在Windows9转载 2014-11-25 21:34:01 · 14787 阅读 · 0 评论 -
MFC的SendMessage函数详解
SendMessage函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。函数原型 :LRESULT SendMessage(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM IParam);参数:转载 2014-06-22 14:28:29 · 22455 阅读 · 0 评论 -
SendMessage、PostMessage原理
SendMessage、PostMessage原理本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为:1、SendMessage、PostMessage的运行机制。2、SendMessage、PostMessage的运行内幕。3、SendMessage、PostMessage的内部实转载 2014-06-22 13:50:51 · 589 阅读 · 0 评论 -
MFC学习笔记(四)
一:SetROP2函数的应用,设置绘图模式原创 2014-06-07 18:55:58 · 680 阅读 · 0 评论 -
c++ ActiveX基础:使用VS2010创建MFC ActiveX工程项目
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成O转载 2014-05-26 22:48:37 · 777 阅读 · 0 评论 -
MFC学习笔记(二)
一:响应WM_PAINT消息的OnPaint()函数中,原创 2014-06-05 21:18:15 · 577 阅读 · 0 评论 -
vc加载动态链接库
1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该D转载 2014-06-26 11:22:04 · 3379 阅读 · 0 评论