
VC/MFC
文章平均质量分 61
LeiShi
在期货证券行业中从事大型交易系统的设计和开发工作。
展开
-
MFC映射机制剖析
一、消息映射机制1、消息响应函数:(例:在CDrawView类响应鼠标左键按下消息)1)在头文件(DrawView.h)中声明消息响应函数原型。//{{AFX_MSG(CDrawView) //注释宏afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//}}AFX_MSG //注释宏说明:在注释宏之间的声明在VC中灰色显示。af原创 2006-05-25 14:17:00 · 1768 阅读 · 3 评论 -
MFC框架的创建过程
很久没有使用MFC了,以至于都忘记MFC框架复杂的窗口、文档、视的创建过程了。下面我们跟踪一个MFC MDI的应用程序,来温习或学习一下。 使用AppWizard创建一个MDI应用程序,我创建的应用程序叫MDITest,这样MFC生成了如下的类:类名 作用CMDITestApp 派生于CWinApp的应用程序类。CMainFrame 派生于CMDIFrameWnd的MDI框架窗口类。CMDITes原创 2008-12-16 14:33:00 · 2312 阅读 · 0 评论 -
ASSERT和VERSIFY
这里给大家一些提示: ASSERT()里面的内容在Release版本中不编译。VERIFY()里面的内容仍然编译,但不再判断真假。所以,后者更安全一点。 例如:ASSERT(file.Open(strFileName)); 一旦到了Release版本中,这一行就忽略了,file根本就不Open()了,而且没有任何出错信息。如果用VERIFY()就不会有这个问题。当然这不原创 2007-04-19 11:02:00 · 1092 阅读 · 0 评论 -
AfxBeginThread与CreateThread的区别
如果用MFC编程,不要用CreateThread,如果只是使用Runtime Library,用_BegingThread,总之,不要轻易使用CreateThread。这是因为在MFC和RTL中的函数有可能会用到些它们所封装的公用变量,也就是说AfxBeginThread和_BeginThread都有自己的启动代码是CreateThread所没有的。在用CreateThread所创建的线程中使原创 2007-04-19 11:08:00 · 5559 阅读 · 0 评论 -
线程的基础知识
1. 进程与线程有那些区别和联系? 每个进程至少需要一个线程。 进程由两部分构成:进程内核对象,地址空间。线程也由两部分组成:线程内核对象,操作系统用它来对线程实施管理。线程堆栈,用于维护线程在执行代码时需要的所有函数参数和局部变量。 进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。原创 2006-06-22 14:21:00 · 1621 阅读 · 0 评论 -
MFC中文档和视图的关系
1、应用程序对象有一个文档模板管理器CDocManager* m_pDocManager(第一次调用AddDocTemplate时new出来)2、文档模板管理器有一个文档模板对象列表CPtrList m_templateList(AddDocTemplate 函数负责添加该列表)3、文档模板对象拥有文档、视图、框架的静态CRuntimeClass成员指针用于动态创建,还有一个m_nIDRe原创 2006-06-13 14:32:00 · 4556 阅读 · 1 评论 -
视图的三叉切分
1、在主框架中声明两个CSplitterWnd对象public: CSplitterWnd m_wndSplitter1; CSplitterWnd m_wndSplitter2;2、重载CMainFrame::OnCreateClient,左一右二方式切分BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext原创 2006-06-08 10:51:00 · 1379 阅读 · 0 评论 -
程序不能脱离操作系统的原因
操作系统起到如下两个作用: 一、将所有的系统资源收归己有,然后视需要有条件地分配给用户进程,目的是协调诸多进程对系统资源的请求; 二、提供任何一个用户进程都需要的功能。比如维护页表,比如磁盘IO等。这一方面是因为第一条的理由,另一方面也简化了程序的编写。所以这些程序脱离了操作系统就无法执行。 编写“脱离”操作系统的程序主要是要完成:CPU和外设的初始化,在初始化完成之后原创 2006-06-02 13:20:00 · 1738 阅读 · 3 评论 -
VC快捷键总结
F1: 帮助 Ctrl+O :OpenCtrl+P :PrintCtrl+N :NewCtrl+Shift+F2 :清除所有书签F2 :上一个书签Shift+F2 :上一个书签Alt+F2 :编辑书签Ctrl+F2 :添加/删除一个书签F12 :Goto definitionShift+F12 :Goto referenceCtrl+Num+ :Displa转载 2006-06-02 09:20:00 · 2206 阅读 · 0 评论 -
Windows程序内部运行机制
Windows程序设计是种事件驱动方式的程序设计,主要基于消息的。当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队列中取走消息并进行响应。 消息结构:typedef struct tagMSG { // msg HWND hwnd; //接收消息的窗口句柄。和哪个窗口相关联。原创 2006-06-01 14:32:00 · 1177 阅读 · 0 评论 -
Afx全局函数和MFC常见数据类型
Afx全局函数AfxBeginThread:开始一个新的线程AfxEndThread:结束一个旧的线程AfxFormatString1:类似printf一般地将字符串格式化AfxFormatString2:类似printf一般地将字符串格式化AfxMessageBox:类似Windows API 函数 MessageBoxAfxOuputDebugString:将字符串输往除错装置AfxGet原创 2006-05-29 10:57:00 · 1700 阅读 · 0 评论 -
关于VC中时间函数的讨论
先从一个如何在程序中延时的问题谈起,延时的方法有 方法一: 使用sleep函数,它的最小单位是1ms,如延时2秒,用sleep(2000) 方法二: 使用sleep函数的不利处在于期间不能处理其他的消息,如果时间太长,就好象死机原创 2011-08-02 15:19:17 · 831 阅读 · 0 评论