MFC
文章平均质量分 63
ohmygol
这个作者很懒,什么都没留下…
展开
-
WPARAM,消息响应机制
WPARAM,消息响应机制 wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数: 一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。 到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam和lParam的大小完全相同。 在Win32API的早期,为了保证和Win16API的代码可移植性MS定义了WP转载 2011-01-13 16:14:00 · 590 阅读 · 0 评论 -
深入分析MFC文档视图结构(项目实践)
<br /><br />文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而,虽然我们使用MFC AppWizard就可以很轻松地获得一个支持Document/View Architecture的MFC程序框架,Document/View Architecture本身的复杂性加上VC产生的一系列代码足够让我们眼花缭乱转载 2011-04-08 17:14:00 · 675 阅读 · 0 评论 -
MFC中CMainFrame类CDoc类CView类CApp类之间关系
<br /><br />用APPWIZARD这个工具声称的应用程序架构包括了应用程序基本的四个类,<br />分别是:CApp,CMainFrame,CDoc,CView。<br />其中 CApp负责整个应用程序的管理,CDOC类中有一个CAPP的指针,也可以认为应用程序是从CApp开始执行的。<br />CMainFrame是主窗口框架<br />CDoc是应用程序数据来源(文档)主要是用来管理数据,提供保存和加载数据的功能。有关文件的读写操作在CDoc的Serialize函数中进行。<br />CVi转载 2011-04-08 17:16:00 · 3476 阅读 · 1 评论 -
VC对话框控件不响应回车消息之解决方案
<br /><br />用IE浏览网页时回车就可提交信息,如:google搜索时填入搜索内容按回车键就可以提交<br />但在VC对话框里用webbrowser控件浏览网页时,按回车键就直接退出对话框程序了,<br />原因是对话框先截获回车消息,然后调用OnOK(),所以就退出了。<br />解决方法是重载PreTranslateMessage(MSG* pMsg)函数:<br /> view plaincopy to clipboardprint?BOOL CMyDlg::PreTranslateMes转载 2011-04-12 11:26:00 · 3928 阅读 · 0 评论 -
Parsing error
<br /><br />有时候在给程序的类添加消息响应或者虚函数的时候,会弹出“Parsing error:Expected "afx_msg",input line.......”<br /> //{{AFX_MSG(CMyimageDoc)<br />public:<br /> afx_msg void OnStart();<br /> afx_msg void Onsavefile();<br /> afx_msg void OnStop();<br />protected:<br /> afx_ms转载 2011-04-12 11:33:00 · 6296 阅读 · 1 评论 -
Visual Leak Detector 下载 以及在 VC6.0 中的使用方法!
Visual Leak Detector (VLD) 1.9h (Beta),点这里开始下载!我昨天用到这个工具,下载到Visual Leak Detector 后按照网上的使用步骤开始调试,新建了一个Win32的应用程序,结果是成功了。但当我在自己以前的MFC工程中包含了这个文件,编译能够通过,一运行就会出错,整的我好困惑,也许是版本不同的原因,网上大部分讲解的都是1.0版本的,而我原创 2011-06-07 11:34:00 · 1437 阅读 · 0 评论 -
VC内存泄露检查工具:Visual Leak Detector
灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常原创 2011-06-07 10:33:00 · 523 阅读 · 0 评论 -
VC 多文档去掉菜单栏
<br />一个多文档程序,用SetMenu(NULL)不能去掉菜单栏,单文档可以直接在框架类的OnCreate函数中去掉即可,但这里不行。<br />其实在CXXXApp的InitInstance()中的AddDocTemplate(pDocTemplate);<br />后面加上pDocTemplate->m_hMenuShared=NULL;<br />然后在pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);<br />pMainFrame->UpdateWindow(原创 2011-04-26 11:18:00 · 2295 阅读 · 1 评论 -
SDI程序让视图窗体随着父窗体的放大而放大
<br /> <br />重载WM_SIZE消息响应函数,然后在响应消息函数里调用子窗口的MoveWindow()函数,在MoveWindow()指定位置和大小<br /> <br />void CMainFrame::OnSize(UINT nType, int cx, int cy) { CFrameWnd::OnSize(nType, cx, cy); // TODO: Add your message handler code here if (NULL != m_Consol原创 2011-04-27 16:31:00 · 573 阅读 · 0 评论 -
MFC,单文档视图创建顺序
<br />OnInitialUpdate 视图窗口完全建立后第一个被框架调用的函数。框架在第一次调用OnDraw前会调用OnInitialUpdate,因此OnInitialUpdate是设置滚动视图的逻辑尺寸和映射模式的最合适的地方。<br /> 时间上,两者先后顺序不同,构造函数生成本类的对象,但没有产生窗口,OnCreate后窗口产生, 然后才是视图的OnInitialUpDate,一般在这里对视图的显示做初始化。简单点,就是ONCREATE只是产生VIEW的基本结构和变量而在OnIniti转载 2011-04-08 16:49:00 · 2595 阅读 · 0 评论 -
VC项目开发之单文档多视图实现(整理)
<br /><br />多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有三种方式(1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多。(2)通过一个文档关联多个视图,窗口显示整个视图。(3)有一个函数可以简单的实现视图间的切换。下面就简单的介绍一下这三种方式。<br />1. 通过视图分割的技术<br />这种方式比较简单,有很多资料。这里就不详细介绍了,我的博客前面有详细的介绍。<转载 2011-04-08 17:14:00 · 2183 阅读 · 1 评论 -
消息处理函数LRESULT CALLBACK WndProc()、应用程序主函数int WINAPI WinMain ()
一、消息处理函数 LRESULT CALLBACK WndProc();//二、应用程序主函数int WINAPI WinMain ()Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。每个窗口都有一个消息处理函数。在消息处理函数中,对传入的消息进行处理。系统内还有它自己的缺省消息处理函数。 客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关联。这样,每当有消息产生时,就会去调用这个消息处理函数。通常情况下,客户都不会处理全部的消息,而是只处理自己感兴趣的消息转载 2011-01-13 16:41:00 · 20098 阅读 · 0 评论 -
CreateWindowEx和CreateWindow的区别
<br />CreateWindowEx 函数功能:该函数创建一个具有扩展风格的重叠式窗口、弹出式窗口或子窗口,其他与 CreateWindow函数相同。关于创建窗口和其他参数的内容,请参看CreateWindowEx。 函数原型:HWND CreateWindowEx(DWORD dwExStle,LPCTSTR IpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndPa转载 2011-01-13 17:55:00 · 3267 阅读 · 0 评论 -
CALLBACK回调函数详解
凡是由你设计却由windows系统呼叫的函数,统称为callback函数。某些API函数要求以callback作为你参数之一。如 SetTimer,LineDDA,EnumObjects。 回调函数是由开发者按照一定的原形进行定义的函数(每个回调函数都必须遵循这个原则来设计)例如:----------------------------------------BOOL CALLBACK DialogProc( HWND hwndDlg, // handle of dialog box转载 2011-01-13 16:33:00 · 3042 阅读 · 1 评论 -
Windows SDK笔记
<br /><br />Windows SDK笔记(一):Windows程序基本结构<br />一、概述<br /><br />Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。<br />程序中只要按一定的格式填写系统留给客户的那一小部分。<br />所需要完成的有:<br />窗口类的定义、窗口的建立、消息函数的书写、消息循环。<br /> <br />二、消息处理函数<br /><br />Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由原创 2011-01-17 16:05:00 · 597 阅读 · 0 评论 -
VC用ADO连接oracle的方法
import "c:/program files/common files/system/ado/msado15.dll" / no_namespace / rename ("EOF", "adoEOF")_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;// 初始化COM,创建ADO连接等操作AfxOleInit();连接:m_pConnection.CreateInstance(__uuidof(Connection));try //建立数据原创 2011-03-07 02:03:00 · 1405 阅读 · 0 评论 -
vc++ resource.h文件出现“fatal error RC1004: unexpected end of file found”问题
<br />问题描述:vc6中编译是在resource.h文件出现“fatal error RC1004: unexpected end of file found”错误问题原因:resource文件最后一行需要一个回车,可能是因为通过拷贝粘贴时将回车换行去掉了解决方法:添加一个回车换行符原创 2011-03-31 11:06:00 · 2537 阅读 · 0 评论 -
多文档转单文档工程(转帖)
<br />多文档改单文档步骤:<br />1.首先找到CXxxApp类里的InitInstance函数 (其中Xxx为你自己创建的类名称)<br />将多文档模块改为添加单文档模块<br />CSingleDocTemplate * pDocTemplate;<br /> pDocTemplate = new CSingleDocTemplate(<br /> IDR_XxxTYPE,<br /> //IDR_MAINFRAME,<br /> RUNTIME原创 2011-04-06 15:27:00 · 950 阅读 · 0 评论 -
vc 建立空文档失败 问题跟踪
<br /><br />问题引入:<br /> 新建一个mfc单文档程序后,删除了所有的工具栏条目,程序编译通过,但在执行时后提示:“建立空文档失败”,程序退出<br />问题分析:<br /> 由于工具栏资源被删除,所以在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<br />里面创建工具栏目时候会失败。 但是这和弹出“建立空文档失败”看不出直接联系。为了查出根本原因,这里进行深入调试。<br /> 跟踪调试,问题出现在转载 2011-04-08 17:15:00 · 3414 阅读 · 0 评论 -
VC6.0中如何修改工程的名字
其实有一个比较简单的方法,不过需要的是仔细,我已经试过了是可行的,假如你的工程是AAA,想改为BBB,请按照一下步骤操作: 1 备份源工程,这样即便是失败也没关系. 2 删除工程对应的临时文件,AAA.ncb,AAA.opt,AAA.APS 3 用文本编辑工具,不如UltraEdit,打开AAA.dsp,搜索字符串AAA,确认该字符串是工程名相关,并替换为BBB,替换完后转载 2012-04-17 17:22:39 · 876 阅读 · 0 评论