深入浅出MFC学习笔记 消息】的更多相关文章

本章将会对MFC的消息映射和 命令传递机制做深入探讨. MFC规定了消息传递的路线,消息会按照这个路线传递下去,找不到归宿的话就交给DefWindowProc. 在产生窗口之前,如果我们在创建窗口时指定的窗口类为NULL时,MFC会自动注册五个默认的窗口类,每个窗口类有自己的窗口函数.不同窗口得到的消息应该交由不同的窗口函数来处理.所谓的命令传递机制是为了让消息的流动有线路可循,实现一个巨大的网,实现所有可能的路线.这就是所谓的消息映射图. WM_COMMAND是来自菜单或工具栏,被称为命令消息…
0:MFC类层次结构 1:MFC程序的初始化过程CWinApp::InitApplication()CMyWinApp::InitInstance()CMyFrameWnd::CMyFrameWnd()CFrameWnd::Create()CWnd:CreateEx()CFrameWnd::PreCreateWindow()CWinApp::Run()CWinThread::Run() 2:RTTI[CRuntimeClass]DECLARE_DYNAMICIMPLEMENT_DYNAMIC 3…
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介: 具体详细细节可以参考离线文档 第一个MFC程序: 1.创建一个win32程序 2.设置使用MFC 3.添加类 #include <afxwin.h> class CMyFrameWnd : public CFrameWnd{ }; class CMyWinApp : public CWinAp…
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spout需要记录自己emit(发射)的tuple(消息元祖),当下游bolt处理tuple或者子tuple失败时spout能够重新发射. Storm通过调用Spout的nextTuple()发送一个tuple.为实现可靠的消息处理,首先要给每个发出的tuple带上唯一的ID,并且将ID作为参数传递给So…
该文是 objc_msgSend消息传递学习笔记 – 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文. 消息转发机制(message forwarding) Objective-C 在调用对象方法的时候,是通过消息传递机制来查询且执行方法.如果想令该类能够理解并执行方法,必须以程序代码实现出对应方法.但是,在编译期间向类发送了无法解读的消息并不会报错,因为在 runtime 时期可以继续向类添加方法,所以编译器在编译时还无法确认类中是否已经实现了消息方法. 当对象接受到无法解读的消息后…
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程序猿的工作,将C++面向对象这一特点很好的表现出来. 用MFC可以用鼠标来编辑界面,管理各种控件,以及简化一些操作如字符串操作.文件操作.时间日期操作.网络操作.Windows系统操作.数据库操作…… 既然MFC是类库,那么她必然会用到类的特性:模板类.类的封装继承.虚继承.多态性等等. 然而就我的…
作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.net/uid-26275986-id-3868272.html 红色字部分是我自己的注解 学习MFC就像玩魔术,着实有趣,从传统的黑白命令行跳到熟悉的窗口界面,感觉还是很新鲜的.尽管MFC的知识更多是应用性的,但是自己还是想尽快掌握起来独立地写出图形接口的程序.今天学习的是如何绘制简单的图形,比如直…
https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-Server开发/深入浅出Node.js-f46c.pdf 深入浅出Node笔记: // math.js exports.add = function () { var sum = 0, i = 0, args = arguments, l = args.length; while (i < l) {…
前言 学习了鸡啄米网页的前三部分后,我们就可以做一个小软件出来了,我选择先做一个计算器. 这是Win7系统自带的计算器: 为了提升成就感,我将计算器的大部分内容去除,于是就变成这样: 这样就只剩下了16个按钮和一个文本显示框,这样就简单多了! 新建一个MFC对话框应用程序 打开VS2010点击Start Page中的New Project(新建工程),或者菜单栏File -> New -> Project 弹出新建项目对话框,在左侧选择MFC,然后在中间选择MFC Application 在下…
个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程序设计(第2版)>. 对于MFC本阶段的学习主要采用标题:MFC-01-Chapter0x:Title MFC系列学习较为繁琐,希望自己能够坚持. Come on baby don't be shy!…
获取窗口句柄 FindWindow               根据窗口名获取 GetSafehWnd                取你程序所在窗口类的句柄 GetActiveWindow          取当前活动窗口句柄 AfxGetMainWnd            取主窗口句柄 GetForegroundWindow   取前台窗口句柄 窗口对象和CWnd对象,Attach和Detach函数 CWnd对象实际上并没有把整个Windows对象都包装在其中,它只是有一个窗口句柄.(在M…
1.指向常量的指针 2.指针常量 3.C语言对文件操作是在缓冲区,在缓冲区满或文件关闭时写入文件 读取相同 4.fflush刷新缓冲区,使缓冲区数据写入文件 5.fseek改变文件指针偏移量 6.stell获取文件指针当前位置 7.rewind重新放置文件指针到开始处 8.写入换行会变成两个字节(回车与换行) 9.读文件时,如果以二进制读入,换行符与回车是两个字符,如果以文本方式读入,换行符与回车是两个字符 10.二进制文件和文本文件 11.文本方式与二进制方式 12.写入与读取应该用同一种方式…
1.画线方法 *1.捕获鼠标按下和弹起消息,获取两个点 *2.消息响应,画线 2.在CMainFrame类中的鼠标左键事件得不到响应的原因是CNameView覆盖了CMainFrame 3.注释宏 4.画线方法 *1.HDC *2.CDC(MFC封装) *3.CClientDC(不用显式释放资源) *4.CWindowDC(可以画到非客户区) 5.画线步骤 *1.获取DC *2.MoveTo到原点 *3.LineTo到目标点 *4.释放DC 6.CPen 构造函数参数: 线类型PS_SOLID等…
1.MFC中WinMain函数的位置在APPMODUL.cpp APPMODUL.cpp中是_tWinMain,其实_tWinMain是一个宏#define _tWinMain WinMain 2.全局变量(对象)的构造在入口函数之前 3.带有Afx前缀的函数是应用程序框架函数(Application Framework) 4.MFC程序运行过程 *1.产生全局对象 CNameApp类InitInstance函数,调用父类构造函数,做一些初始化工作并保存子类的指针 *2.进入WinMain函数…
学习资料:https://www.yiibai.com/vba/vba_macro_comments.html 注释 单引号或 REM 开头 丸子:多行注释咋办? 消息框(MsgBox) 函数功能:显示一个消息框,并等待用户点击一个按钮,然后根据用户点击的按钮执行相关的操作. 函数用法:MsgBox(prompt[,buttons][,title][,helpfile,context]) 参数 参数 类型 选项 说明 默认值 prompt 字符串 必填 在对话框中显示为消息的字符串.提示的最大长…
1.HOOK拦截消息,设置越后的钩子优先级越高(钩子队列)2.SetWindowHookEx设置钩子    如果thread identifier为0或其他进程创建的线程,回调函数需要在动态链接库中声明3.CallNextHookEx调用下一个钩子4.UnhookWindowHookEx撤销一个钩子…
16 1.事件对象 2.CreateEvent创建事件对象 3.SetEvent设置事件对象为通知状态 4.ResetEvent设置事件对象为非通知状态 5.InitializeCriticalSection.EnterCriticalSection.LeaveCriticalSection.DeleteCriticalSection操作关键代码段,分别是初始化.进入,离开.删除(释放)临界区 6.三种线程同步(互斥)区别 7.基于消息的异步套接字 8.AfxSocketInit函数加载1.1版…
1.CArchive类保存内存数据 2.CAchive类重载了>>与<<操作符,类似C++文件流 3.在OnNewDocument中通过SetTitle设置标题 4.字符串资源中IDR_MAINFRAME的第二个子串是文档标题 5.在App类初始化函数中将标题传进去 6.GetDocString获取字符串资源值 7.IDR_MAINFRAME字符串资源含义: 8.Doc类中的Serialize是保存/加载数据的函数 9.保存后打开同一文件不会进入Serialize函数(MFC认为文…
1.在窗口创建之前就应该修改窗口的样式 2.单文档应用程序会把文档名作为应用程序标题,应该去掉FWS_ADDTOTITLE属性,然后修改lpszName为标题 3.在窗口创建完成后,可以通过SetWindowLong改变窗口外观 4.GetWindowLong可以获取指定窗口信息 5.AfxGetInstanceHandle获取当前应用程序句柄 6.全局与CWnd中都有DefWindowProc函数,在类中使用要加作用域标识符 7.改变图标光标等可以通过在类中重新定义窗口类,并注册,把cs中的窗…
1.在按钮上没有字体设置,但是在对话框上有字体设置 2.让按钮进行消息响应 *1.创建按钮 *2.创建从按钮继承的类 *3.关联对象 3.属性页编程 *1.在对话框资源中新建属性页 *2.为属性页创建类 *3.添加属性列表 *4.显示属性列表(模态/非模态),DoModal,Create *可能需要SetWizardMode创建向导属性列表 *5.重写OnSetActive,在里面调用SetWizardButtons,改变按钮 4.单选按钮选择组,只有第一个选择组,直到遇到下一个组 *1.组内从…
1.DoModal创建模态对话框 2.Create创建非模态对话框(需要用ShowWindow显示出来) 模态:对话框显示,程序会暂停,直到对话框关闭 非模态:对话框显示,程序继续执行 3.对于模态对话框,点击确定/取消对话框被销毁,而对于模态对话框,只是被隐藏 4.对于模态对话框,需要在自己的类中覆盖OnOK这个虚函数,在OnOK中调用DestroyWindow 5.GetWindowText获取窗口文本 6.GetDlgItem获取对话框控件指针 7.SetWindowText设置窗口文本…
1.对菜单响应的顺序: 视类,文档类,框架类,应用程序类 2.消息的分类 3.CWnd继承自CCmdTarget类, 所以从CWnd派生出的类也可以接收WM_COMMAND消息 4.命令的消息路由 5.GetMenu获取指向菜单栏的指针 6.GetSubMenu获取指向子菜单的指针 7.CheckMenuItem设置复选菜单 8.SetDefaultItem设置缺省菜单项 9.分隔栏也要计算索引位置 10.一个子菜单中只有一个菜单项作为缺省菜单 11.SetMenuItemBitmaps设置菜单…
1.MSG结构 hwnd:窗口句柄 message:消息类型 wParam & lParam:消息的附加信息(比如键值) time:消息被投递的时间 tip:typedef的作用是从变量类型区分变量用途 2.WinMain 3.程序开发步骤 4.设计窗口类 5.创建窗口.显示窗口.更新窗口 6.回调函数 tip:BeginPaint.EndPaint只能在响应WM_PAINT消息中使用,而GetDC不能在这里使用 tip:if语句中如果是常量与变量比较是否相等,应该把常量写在左边(可以避免把==…
使用Visual Studio新建一个空项目,项目命名为HelloMFC,完成后,打开项目属性页面,将配置属性选项卡中的常规项打开,将其中的MFC的使用属性栏改为:在静态库中使用MFC或者在共享DLL中使用MFC,同时将字符集属性栏改为使用Unicode字符集. 图1-1 新建一个空项目 图1-2 更改项目属性 完成以上更改后,在项目头文件中添加新建项头文件,命名为Hello.h,头文件代码如下: class CMyApp : public CWinApp { public: virtual B…
可以想象,如果两个进程都可以访问同一个队列:其中一个进程(sender)向其中写入结构化数据,另外一个进程(receiver)再从其中把结构化的数据读取出来.那么这两个进程就是在利用这个队列进行通信了,这个队列也就称为消息队列(message queue). 消息队列有system V和POSIX两种,这里说system V的. 内核维护中很多个消息队列(因为有很多不同的进程要用它们来通信,不可能共享一个),我们使用一个key_t类型的key来让发送端和接收端进程都清楚了解自己使用的是哪个消息队…
[appmodul.cpp] extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow); } 1 2 3 4 5 6 7 [winmain.cpp] int AFXAPI AfxWinMain(…
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准. TypeScript 由微软开发的自由和开源的编程语言. TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上. 以上为网上对 Typescript 的一些解释,那我们为什么要学 Typescript? 提到前端我们首先会想到 HTML,CSS,JavaScript 三大家族,我们掌握这三个就可以在前端界获得一…
1.动态链接库 2.静态库和动态库 3.使用动态链接库的好处 4.动态链接库编译需要导出,使用需要导入 __declspec(dllexport),__declspec(dllimport) 5.动态链接库加载的方式 隐式:#pragma comment(lib, "../debug/dll1.lib") // 显示的声明要链接dll1.lib,隐式调用 显式:HMODULE hModule = ::LoadLibraryA("dll1.dll");…
18 1.容器和服务器程序 2.InvalidateControl重绘控件 3. 4.GetBackColor获取背景色 5.GetForeColor获取前景色 6.TranslateColor进行颜色转换…
17 1.进程间通信4种方式 2.OpenClipboard打开剪贴板 3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口 4.SetClipboardData设置剪贴板数据格式 5.GlobalAlloc从堆中分配内存 6.GlobalLock对全局内存对象加锁,返回内存指针 7.GlobalUnlock解锁内存对象 8.发送剪贴板步骤: OpenClipboard打开剪贴板 EmptyClipboard清空剪贴板 SetClipboardData设置数据类型 Glo…