摘要:使窗口设置为最大化,最顶层int cxScreen,cyScreen;cxScreen=GetSystemMetrics(SM_CXSCREEN);//获得屏幕的宽度cyScreen=GetSystemMetrics(SM_CYSCREEN);//获得屏幕的高度 SetWindowPos(&wndTopMost,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW);//设置窗口为最顶层设置窗口为最顶层,不可移动和改变尺寸AfxGetMainWnd()->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE
阅读全文
随笔分类 - VC/MFC
摘要:对话框的控件与其对应类的对象相关联:(两种方法)(1) 通过CWnd::DoDataExchange函数进行关联; 用VC++6.0的MFC ClassWizard中的Member Variables页面的Add Variable关联一个变量 然后在程序的DoDataExchange函数中会有DDX_XXXXX函数关联;该方法非常通用;比如一个CEdit控件,既可以关联一个CEdit对象,也可以关联int,CString等类型的变量;(2) 用一下函数进行关联(与其对应的类的对象关联)主要应用如下函数:CWnd* GetDlgItem( intnID) const;nID为资源的ID号,当然,
阅读全文
摘要:Mfc消息的响应机制Mfc中有很多资源,如图标资源,菜单资源,工具栏资源等等;那么,资源是如何进行消息响应和消息映射的呢?它们的流程是:某种资源——对应的ID号——消息映射——响应函数的声明与实现下面我们以工具栏的资源响应为例:(多文档的应用程序)1. 在工具栏资源增加一个图标(随便画一下),双击它,设置它的资源ID为:ID_MYICON2. 在View类的.cpp文件中添加消息映射;找到BEGIN_MESSAGE_MAP()与END_MESSAGE_MAP()之间的代码,添加消息映射语句ON_COMMAND(ID_MYICON,OnMyicon)其中,第一个参数是资源的ID号;第二个为消息响
阅读全文
摘要:一、MFC允许对象在程序运行的整个过程中持久化的串行化机制(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程。(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态。(3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议。(4)串行化的基本思想: a、对象必须能将其当前状态写入到持久化存储媒介中,通常用其成员变量实现。 b、对象可以通过读或反序列化从存储媒介中重新构造对象的状态。 c、串行化处理所有对象指针的细节,以及序列化对象时对对象的循环引用。 d、关键点是对象自己负责读和写其本身的状态,所以
阅读全文
摘要:MFC工具栏控件 创建工具栏步骤: (1)在Resource View中插入新toolbar (2)在toolbar上双击增加按钮,更改ID为ID_BUTTON,编译后在resource.h中即可看到 #define ID_BUTTON132771 (3)在框架类中添加保护的成员变量 CToolBar m_MyToolBar; (4)在框架类的OnCreate中用CreateEx创建工具栏控件(设置属性),加载工具栏资源 代码如下: if (!m_MyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEF...
阅读全文
摘要:CArray及其派生类1.简介:访问方法及效率和普通的数组一样,比普通数组强大的功能是可以改变数组的大小。Array采用队列方式存储数据,因而其内部数据元素是以物理方式顺序排列的,所以检索、顺序执行GetAt()等函数的速度是相当快的。但是由于每次队列长度变化后,数据都要重新申请内存、拷贝内存、释放内存,Insert/Add/RemoveAt()的速度都很慢。特点:通过索引(数组下标)访问的速度很快,但是插入删除操作很慢,因为插入删除操作时,是需要移动元素的。访问方法:通过索引访问,普通的数组怎么用,它就可以怎么用。2. MFC数组类CArray的使用的操作详解MFC的数组类支持的数组类似于常
阅读全文
摘要:源代码:http://download.csdn.net/detail/nuptboyzhb/4219669源代码:1.插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名为ClyricDlg;2.在对话框的头文件中添加GDI+相关的头文件和动态库#define UNICODE#ifndef ULONG_PTR#define ULONG_PTR unsigned long*#endif#include "GDIPlus\\Includes\\GdiPlus.h" ////Modify your pathusing namespace Gdiplus;#pragma
阅读全文
摘要:源代码:http://download.csdn.net/detail/nuptboyzhb/4221531CSplitterWnd类CSplitterWnd类提供一个分隔器窗口的功能,分隔器窗口是一个包含有多个窗格的窗口。窗格通常是应用程序特定的由CView派生的对象,但它也可以是具有适当子窗口ID的任何CWnd对象。一个CSplitterWnd对象通常被嵌入CFrameWnd或CMDIChildWnd父对象。你应按如下步骤创建一个CSplitterWnd对象:1.在父框架中嵌入一个CSplitterWnd成员变量。2.重载父框架的CFrameWnd::OnCreateClient成员函数。
阅读全文
摘要:忙里偷闲,把前一段时间做的一个小项目总结一下。源代码:http://download.csdn.net/detail/nuptboyzhb/4333353功能简介:1.插入图形:直线、矩形、圆形、椭圆、多边形、箭头、菱形2.插入图片:支持bmp图片3.插入文字4.编辑:支持图形的剪切、复制和粘贴功能;5.支持项目的保存和打开;特别说明:对bmp格式的图片,本项目用CDib类来管理,方便对bmp图片的图像处理算法的开发;另外:对于项目的保存和打开,体现了类的串行化和数组的管理方式。其中,对CDib类的串行化,非常有参考价值;该项目这种多态性+STL+串行化的管理方式,易于拓展。同时‘文档+视图’
阅读全文
摘要:写一篇小小的日志为了在VS2008中安装Qt的插件,花了我很多的时间。1.vs2008在win7中破解问题我的VS2008已经安装好了,不知道为何,当初没有破解,现在只剩下15天限制了。于是为了破解,先卸载了VS2008。在VS2008的安装包中把Setup/setup.sdb文件中的[Product Key],由“T2CRQGDKBVW7KJR8C6CKXMW3D”修改为“PYHYPWXB3BB2CCMV9DX9VDY8T”重新安装后,正常使用。2.VS2008与PPT和Excel的冲突安装好破解的VS2008后,PPT和Excel打开时,提示一个VS2008的安装对话框,点取消后,PPT和
阅读全文
摘要:源代码:http://download.csdn.net/detail/nuptboyzhb/41377841. 导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON12. 在框架程序的初始化函数中,初始化一个托盘图标的一个结构体NOTIFYICONDATAnotifyicondata;//NOTIFYICONDATA结构notifyicondata.cbSize= sizeof(NOTIFYICONDATA);//为notifyicondata结构体分配空间 //为notifyicondata结构体各个参数赋值notifyicondata.hWnd= m_hWnd;//窗口的句
阅读全文
摘要:源代码:http://download.csdn.net/detail/nuptboyzhb/4197151CHyperLink类,是由CStatic类派生出来,重载了CStatic类的如下函数:public: virtual BOOL PreTranslateMessage(MSG* pMsg); virtual BOOL DestroyWindow(); protected: virtual void PreSubclassWindow();进行了如下消息响应的处理:afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); afx_msg BOO
阅读全文
摘要:有程序EXE和DLL,其中DLL中有1个函数用来显示对话框,被EXE调用。当EXE和DLL都为Release或Debug时,没有任何问题,但EXE为Release、DLL为Debug时,就会出错。该DLL是用VC提供的MFC Extension DLL,函数的代码如下:HINSTANCE hInstOld = AfxGetResourceHandle(); // 该句出错HINSTANCE hInstNew = GetModuleHandle("T01Test.dll");AfxSetResourceHandle(hInstNew);CHahaDlg dlg;dlg.DoM
阅读全文
摘要:现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32DLL和MFCDLL两个方面来分析并解决这个问题。1.Win32DLL在Win32DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者CreateDialog这两个函数(或相同作用的其它函数)来创建对话框,并定义你自己的对话框回调函数处理对话框收到的消息。下面通过一个具体实例来学习如何在Win32DLL中使用对话框,可以按照以下步骤来完成这个例子:1)在VC菜单中File->Ne
阅读全文
摘要:最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记一、修改预编译头文件(stdafx.h)在stdafx.h文件中添加下面代码,包含一些MFC的头文件,这些可以在一个MFC工程中复制过来 1 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将为显式的 2 3 #include // MFC 核心组件和标准组件 4 #include // ...
阅读全文
摘要:今天写了一个DLL,DLL中用到的一个类里用到的MSXML的COM组件,所以在DLL中要包含afx.h头文件,也就不可避免的要用到MFC的类库了,但在编译时出现了错误:mfcs42d.lib(dllmodul.obj) : error LNK2005:_DllMain@12already defined in NetDriverConfig.obj,在http://topic.csdn.net/t/20010911/10/281452.html处的贴子里找到了以下回答,试了一个原来是文件里定义的对象与mfcs42d.lib有冲突,加了命名空间后问题解决。还不知道DLL能不能使用,明天试一下再说
阅读全文
摘要:第一部分:API函数简介1.SetWindowsHookEx函数函数原型HHOOKSetWindowsHookEx(int idHook, // hook type HOOKPROC lpfn, // hook procedure HINSTANCE hMod, // handle to application instance DWORD dwThreadId // thread identifier);函数功能:该函数将一个应用程序定义的挂钩处理过程安装到挂钩链中去,您可以通过安装挂钩处理过程来对系统的某些类型事件进行监控,这些事件与某个特定的线程或系统中的所有事件相关.具体参数详见MSD
阅读全文
摘要:1、对于模态对话框而言,单击确定以后对话框窗口对象即被销毁了,而对于非模态对话框来说,对话框的对象并未销毁而是隐藏起来(EndDialog函数),因此对于非模态对话框,必须重写OnOK这个虚函数,并在重写的函数中调用DestroyWindow函数,以完成销毁对话框的工作,同时注意不要再调用基类的OnOK函数。2、当一个类从一个基类公有继承时,基类中的公有成员就如同派生类中定义的公有成员一样,这一点用sizeof函数就可以很明显的看出来。所以派生类对基类成员修改时,并不影响基类成员本身。3、对静态文本控件,如果需要让其响应鼠标的按键操作时,必须将其ID改掉,因为其默认是不响应鼠标单击等消息的,并
阅读全文
摘要:Group就其意思就是一组的意思。就是说用于选择多个控件组合,选了TRUE后,你就可以为这组新建一个变量。把一组控件当一个控件来使用。例如多个单选按钮用group属性,这样你就可以用一个变量来管理这些按钮,例如获得当前选项什么的。单选按钮在没有设置Group属性时,在右击添加变量时中看不到按钮控件的ID号,设置了Group属性后就可以看到ID号并能设置变量。Group属性是用来对单选按钮进行成组设置的。设置Group属性的Radio是本组的第一个,ID大于本Radio ID的Radio都是本组的radio(但是小于另一个设置Group属性的Radio ID)。一个组只能设置一个控件变量。组内的
阅读全文
摘要:1、在窗口创建前修改窗体外观 在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)函数中修改,其中CREATESTRUCT结构中有诸如窗口大小和标题等的修改,这里注意的是如果要修改标题的话,需要修改CREATESTRUCT style &= ~FWS_ADDTOTITLE,不让默认的文档标题添加到窗口标题上。 在窗口创建后修改窗体外观 就在OnCreate函数里修改,SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE) & ~WS_MAXIMI
阅读全文