mfc

#define 中的“ # 运算符”和“ ## 运算符”

隐身守侯 提交于 2020-03-02 08:02:58
1. 利用宏参数创建字符串:# 运算符 在类函数宏(function-like macro)的替换部分中,“#”符号用作一个预处理运算符,它可以把语言符号(token)转化为字符串。例如,如果 x 是一个宏参量,那么 #x 可以把参数名转化为相应的字符串。该过程称为 字符串化 。 说明:类函数宏就是带参数的宏。类函数宏的定义中,用圆括号括起来一个或多个参数,随后这些参数出现在替换部分。 #include <stdio.h> #define PSQR(x) printf("The square of " #x " is %d. /r/n", (x) * (x)) int main( void ) { int y = 5; PSQR(y); PSQR(2 + 4); return 0; } // 输出: The square of y is 25. // 用 "y" 代替 #x The square of 2 + 4 is 36. // 用 "2 + 4" 代替 #x #define STRING2(x) #x #define STRING(x) STRING2(x) #define WQ wangqi #pragma message(STRING2(WQ)) // WQ(字符串) #pragma message(STRING(WQ)) // wangqi(字符串) 2.

MFC设置对话框大小

早过忘川 提交于 2020-03-02 05:49:23
1.设置对话框大小: 1 CRect temprect(0,0,1640,1480); 2 CWnd::SetWindowPos(NULL,0,0,temprect.Width(),temprect.Height(),SWP_NOZORDER|SWP_NOMOVE); 2.使对话框全屏显示: 1 //得到显示器大小 2 int cx,cy; 3 cx = GetSystemMetrics(SM_CXSCREEN); 4 cy = GetSystemMetrics(SM_CYSCREEN); 5 //再用MoveWindow 6 CRect rcTemp; 7 rcTemp.BottomRight() = CPoint(cx, cy); 8 rcTemp.TopLeft() = CPoint(0, 0); 9 MoveWindow(&rcTemp); 来源: https://www.cnblogs.com/johnpher/archive/2012/10/18/2728987.html

MFC 对话框编程 总结

孤街浪徒 提交于 2020-03-02 05:46:29
对话框创建方法: a. 先在Resource View 下 工程的Dialog文件夹中 右键  Insert Dialog 或Insert Resouce-> 选中 Dialog b. 然后在该对话框控件中,右键-》Add Class, 创建一个与之对应的类(如CTestDlg)。在MFC中,对资源的操作通常都是通过一个与资源相关的类来完成的。 使用对话框: 1. 在要使用的文件中添加 b中生成的对话框类的.h文件,根据对话框类型, a. 若使用 模态(Modal)对话框( 当对话框显示时,程序暂停,直到关闭这个对话框后,才能继续执行),则使用 CTestDlg dlg; dlg.DoModal(); b. 若使用 非模态对话框,则使用 // CTestDlg dlg; //dlg.DoModal(); CTestDlg *pDlg = new CTestDlg; pDlg->Create(IDD_DIALOG1,this); pDlg->ShowWindow(SW_SHOW); 2. 编辑控件的访问: 方法:添加完编辑控件后, 右键该控件->Add Variable ,添加与该控件相对应的成员变量(可以是值类型也可以是控件类型),来控制控件。 使用值类型的变量时,若要更新对话框中的控件,则可通过: a. 使用UpdateData(true); 根据控件上的内容更新变量值; b.

猎豹MFC--内存映射_两个进程间共享数据

試著忘記壹切 提交于 2020-03-02 05:38:24
添加对话框 静态文本 Edit Control 按钮: 内存映射技术需要两个变量:在头文件中声明: 现要把编辑框的内容发送到内存映射中:用MFC的动态数据交换把编辑框的value属性和成员变量进行关联。然后就可以把编辑框内容发送到内存映射中: 因为变量要和控件关联 所以勾选控件变量: 在对话框demoB中: 一样对对话框B添加关联: 因为在demoA中创建了内存映射文件,所以在demo B中 要打开文件映射: 现在头文件中 声明需要的变量:’ 在demoB的初始化对话框中: 接着在初始化中添加定时器消息:50毫秒后demo B 启动定时器 接收数据 设置控件中的值 用false。获取控件中的值用true 一定记住 要先启动demoA 因为demoA创建内存映射,后启动demoB。 来自为知笔记(Wiz) 来源: https://www.cnblogs.com/hungryvampire/p/5299340.html

《基于MFC的OpenGL编程》系列文章

主宰稳场 提交于 2020-03-02 05:32:52
1 , 《基于 MFC 的 OpenGL 编程》 Part 1 A Primer 2 , 《基于 MFC 的 OpenGL 编程》 Part 2 Setting up OpenGL on Windows 3 , 《基于 MFC 的 OpenGL 编程》 Part 3 Drawing Simple 2D Shapes 4 , 《基于 MFC 的 OpenGL 编程》 Part 4 Drawing Simple 3D objects 5 , 《基于 MFC 的 OpenGL 编程》 Part 5 Transformations - Rotations, Translations and Scaling 6 , 《基于 MFC 的 OpenGL 编程》 Part 6 Keyboard and Mouse Control 7 , 《基于 MFC 的 OpenGL 编程》 Part 7 Animation 8 , 《基于 MFC 的 OpenGL 编程》 Part 8 Colors 9 , 《基于 MFC 的 OpenGL 编程》 Part 9 Lighting 10 , 《基于 MFC 的 OpenGL 编程》 Part 10 Texture Mapping 11 , 《基于 MFC 的 OpenGL 编程》 Part 11 Blending, Antialiasing and Fog

MFC学习笔记之八————颜色对话框与字体对话框

假装没事ソ 提交于 2020-03-02 05:32:20
当程序中需要用到画图的时候,就要选择画笔的颜色,在MFC中提供了一个CColorDialog的类,通过此类可以很方便的创建这样一个颜色对话框。其构造函数如下: CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );    该构造函数含有三个参数,其中 clrInit :指定默认的颜色选择,默认是黑色。 dwFlags :指定一组标记,用来定制颜色对话框的功能和它的外观。 pParentWnd :指向颜色对话框父窗口,后者拥有者窗口的指针。 我们可以使用dialog的doModal()函数创建颜色对话框。在CColorDialog类型中含有一个CHOOSECOLOR的结构体类型的成员变量: m_cc ,在CHOOSECOLOR结构体中含有一个rgbResult的成员变量,此变量即保存了用户所选择的颜色的,看看CHOOSECOLOR结构体: typedef struct { DWORD lStructSize; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF * lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook;

VC/MFC子窗体向父窗体传递参数的几种方法

巧了我就是萌 提交于 2020-03-01 13:54:57
VC/MFC子窗体向父窗体传递参数的几种方法 典型问题举例 窗体和子窗体均有一个Edit控件和一个按钮,点击父窗体按钮显示子窗体;点击子窗体按钮后,子窗体中Edit控件的值显示在在父窗体中的Edit控件中。 在MFC中实现子窗体向父窗体传递参数的几种方法简述 1、在父窗体定义静态变量 2、传窗体的指针给子窗体 3、子窗体调用GetParent 4、向父窗体sendMessage 方法1,使用静态变量,如果有多个子对象和父对象存在时,处理比较麻烦。 方法2, 传指针给子窗体,子窗体需要另外保存这个指针,此方法可由方法3替代。 方法3, 比方法2优,但与方法2都与父窗体耦合较深。 方法4,推荐采用方法;采用这种方法,子窗体可以放到任何父窗体上,只要父窗体响应此消息即可。 示例源码 通过子窗体调用GetParent向父窗体传递参数的示例 GetParent()->SetDlgItemText(IDC_EDIT1,TCHAR *) 通过向父窗体发送消息(sendMessage)来传递参数示例 SendMessage的基本结构如下 SendMessage( HWND hWnd, //消息传递的目标窗口或线程的句柄。 UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,) WPARAM wParam, //参数1 (WPARAM

VC/MFC子窗体向父窗体传递参数的几种方法

♀尐吖头ヾ 提交于 2020-03-01 13:48:41
VC/MFC子窗体向父窗体传递参数的几种方法 典型问题举例 窗体和子窗体均有一个Edit控件和一个按钮,点击父窗体按钮显示子窗体;点击子窗体按钮后,子窗体中Edit控件的值显示在在父窗体中的Edit控件中。 在MFC中实现子窗体向父窗体传递参数的几种方法简述 1、在父窗体定义静态变量 2、传窗体的指针给子窗体 3、子窗体调用GetParent 4、向父窗体sendMessage 方法1,使用静态变量,如果有多个子对象和父对象存在时,处理比较麻烦。 方法2, 传指针给子窗体,子窗体需要另外保存这个指针,此方法可由方法3替代。 方法3, 比方法2优,但与方法2都与父窗体耦合较深。 方法4,推荐采用方法;采用这种方法,子窗体可以放到任何父窗体上,只要父窗体响应此消息即可。 示例源码 通过子窗体调用GetParent向父窗体传递参数的示例 GetParent()->SetDlgItemText(IDC_EDIT1,TCHAR *) 通过向父窗体发送消息(sendMessage)来传递参数示例 SendMessage的基本结构如下 SendMessage( HWND hWnd, //消息传递的目标窗口或线程的句柄。 UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,) WPARAM wParam, //参数1 (WPARAM

关于MFC的游戏开发学习(二)游戏图片的显示及透明处理

一笑奈何 提交于 2020-03-01 11:04:44
前言:图片格式全是.bmp格式 遇到的问题: 在学习基于vs的mfc的框架中,在添加位图一步出了错。 明明图片是.bmp格式导入vs之后却不是。 后来发现是位图转换不成功,后来找了格式工厂软件用来转换位图就成功了。 知识点: .bmp文件主要由四个部分组成:位图文件头/位图信息头/调色板/位图数据 创建一个窗口之后,显示的屏幕划分为三个区域:屏幕区,窗口区,窗口内部区 透明位图的原理: 黑色RGB(0,0,0) 二进制为:00000000,00000000,00000000 白色(255,255,255) 二进制为:11111111,11111111,11111111 白色与任意色进行与操作=任意色 黑色与任意色进行与操作=黑色 黑色与任意色进行或操作=任意色 显示图片的流程: 1.获取窗口DC 2.创建位图并调用函数LoadImage装载图标,光标或位图 3.定义并创建一个内存设备环境DC,调用函数CreateCompatibleDC创建兼容的DC 4.调用函数SelectObject将位图选入兼容内存设备环境DC中 5.将兼容的DC中的位图填到当前的DC中,调用函数BitBlt显示图像。 6.恢复临时DC的位图,删除内存中的位图,删除兼容的DC,及释放内存资源。 1.添加需要的图片到资源里 右键点击bitmap 点击下属选项添加资源 选择位图,点击导入 再添加你的

MFC: Dynamically change control font size?

醉酒当歌 提交于 2020-03-01 02:34:05
问题 I have a CListCtrl class that I'd like to be able to easily change the font size of. I subclassed the CListCtrl as MyListControl. I can successfully set the font using this code in the PreSubclassWindow event handler: void MyListControl::PreSubclassWindow() { CListCtrl::PreSubclassWindow(); // from http://support.microsoft.com/kb/85518 LOGFONT lf; // Used to create the CFont. memset(&lf, 0, sizeof(LOGFONT)); // Clear out structure. lf.lfHeight = 20; // Request a 20-pixel-high font strcpy(lf