DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  VC/MFC

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 30 下一页

摘要:使窗口设置为最大化,最顶层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 阅读全文
posted @ 2014-01-02 09:41 DoubleLi 阅读(1979) 评论(0) 推荐(0) 编辑

摘要:对话框的控件与其对应类的对象相关联:(两种方法)(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号,当然, 阅读全文
posted @ 2014-01-02 09:40 DoubleLi 阅读(736) 评论(0) 推荐(0) 编辑

摘要:Mfc消息的响应机制Mfc中有很多资源,如图标资源,菜单资源,工具栏资源等等;那么,资源是如何进行消息响应和消息映射的呢?它们的流程是:某种资源——对应的ID号——消息映射——响应函数的声明与实现下面我们以工具栏的资源响应为例:(多文档的应用程序)1. 在工具栏资源增加一个图标(随便画一下),双击它,设置它的资源ID为:ID_MYICON2. 在View类的.cpp文件中添加消息映射;找到BEGIN_MESSAGE_MAP()与END_MESSAGE_MAP()之间的代码,添加消息映射语句ON_COMMAND(ID_MYICON,OnMyicon)其中,第一个参数是资源的ID号;第二个为消息响 阅读全文
posted @ 2014-01-02 09:39 DoubleLi 阅读(722) 评论(0) 推荐(0) 编辑

摘要:一、MFC允许对象在程序运行的整个过程中持久化的串行化机制(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程。(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态。(3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议。(4)串行化的基本思想: a、对象必须能将其当前状态写入到持久化存储媒介中,通常用其成员变量实现。 b、对象可以通过读或反序列化从存储媒介中重新构造对象的状态。 c、串行化处理所有对象指针的细节,以及序列化对象时对对象的循环引用。 d、关键点是对象自己负责读和写其本身的状态,所以 阅读全文
posted @ 2014-01-02 09:38 DoubleLi 阅读(632) 评论(0) 推荐(0) 编辑

摘要: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... 阅读全文
posted @ 2014-01-02 09:36 DoubleLi 阅读(745) 评论(0) 推荐(0) 编辑

摘要:CArray及其派生类1.简介:访问方法及效率和普通的数组一样,比普通数组强大的功能是可以改变数组的大小。Array采用队列方式存储数据,因而其内部数据元素是以物理方式顺序排列的,所以检索、顺序执行GetAt()等函数的速度是相当快的。但是由于每次队列长度变化后,数据都要重新申请内存、拷贝内存、释放内存,Insert/Add/RemoveAt()的速度都很慢。特点:通过索引(数组下标)访问的速度很快,但是插入删除操作很慢,因为插入删除操作时,是需要移动元素的。访问方法:通过索引访问,普通的数组怎么用,它就可以怎么用。2. MFC数组类CArray的使用的操作详解MFC的数组类支持的数组类似于常 阅读全文
posted @ 2014-01-02 09:35 DoubleLi 阅读(1967) 评论(0) 推荐(0) 编辑

摘要:源代码: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 阅读全文
posted @ 2014-01-02 09:34 DoubleLi 阅读(617) 评论(0) 推荐(0) 编辑

摘要:源代码:http://download.csdn.net/detail/nuptboyzhb/4221531CSplitterWnd类CSplitterWnd类提供一个分隔器窗口的功能,分隔器窗口是一个包含有多个窗格的窗口。窗格通常是应用程序特定的由CView派生的对象,但它也可以是具有适当子窗口ID的任何CWnd对象。一个CSplitterWnd对象通常被嵌入CFrameWnd或CMDIChildWnd父对象。你应按如下步骤创建一个CSplitterWnd对象:1.在父框架中嵌入一个CSplitterWnd成员变量。2.重载父框架的CFrameWnd::OnCreateClient成员函数。 阅读全文
posted @ 2014-01-02 09:33 DoubleLi 阅读(787) 评论(0) 推荐(0) 编辑

摘要:忙里偷闲,把前一段时间做的一个小项目总结一下。源代码:http://download.csdn.net/detail/nuptboyzhb/4333353功能简介:1.插入图形:直线、矩形、圆形、椭圆、多边形、箭头、菱形2.插入图片:支持bmp图片3.插入文字4.编辑:支持图形的剪切、复制和粘贴功能;5.支持项目的保存和打开;特别说明:对bmp格式的图片,本项目用CDib类来管理,方便对bmp图片的图像处理算法的开发;另外:对于项目的保存和打开,体现了类的串行化和数组的管理方式。其中,对CDib类的串行化,非常有参考价值;该项目这种多态性+STL+串行化的管理方式,易于拓展。同时‘文档+视图’ 阅读全文
posted @ 2014-01-02 09:32 DoubleLi 阅读(1558) 评论(0) 推荐(0) 编辑

摘要:写一篇小小的日志为了在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和 阅读全文
posted @ 2014-01-02 09:16 DoubleLi 阅读(417) 评论(0) 推荐(0) 编辑

摘要:源代码:http://download.csdn.net/detail/nuptboyzhb/41377841. 导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON12. 在框架程序的初始化函数中,初始化一个托盘图标的一个结构体NOTIFYICONDATAnotifyicondata;//NOTIFYICONDATA结构notifyicondata.cbSize= sizeof(NOTIFYICONDATA);//为notifyicondata结构体分配空间 //为notifyicondata结构体各个参数赋值notifyicondata.hWnd= m_hWnd;//窗口的句 阅读全文
posted @ 2014-01-02 09:09 DoubleLi 阅读(970) 评论(0) 推荐(0) 编辑

摘要:源代码: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 阅读全文
posted @ 2014-01-02 09:02 DoubleLi 阅读(320) 评论(0) 推荐(0) 编辑

摘要:有程序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 阅读全文
posted @ 2014-01-01 23:33 DoubleLi 阅读(800) 评论(0) 推荐(0) 编辑

摘要:现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32DLL和MFCDLL两个方面来分析并解决这个问题。1.Win32DLL在Win32DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者CreateDialog这两个函数(或相同作用的其它函数)来创建对话框,并定义你自己的对话框回调函数处理对话框收到的消息。下面通过一个具体实例来学习如何在Win32DLL中使用对话框,可以按照以下步骤来完成这个例子:1)在VC菜单中File->Ne 阅读全文
posted @ 2014-01-01 23:32 DoubleLi 阅读(5444) 评论(0) 推荐(0) 编辑

摘要:最近用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 // ... 阅读全文
posted @ 2014-01-01 23:26 DoubleLi 阅读(601) 评论(0) 推荐(0) 编辑

摘要:今天写了一个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能不能使用,明天试一下再说 阅读全文
posted @ 2014-01-01 23:08 DoubleLi 阅读(521) 评论(0) 推荐(0) 编辑

摘要:第一部分:API函数简介1.SetWindowsHookEx函数函数原型HHOOKSetWindowsHookEx(int idHook, // hook type HOOKPROC lpfn, // hook procedure HINSTANCE hMod, // handle to application instance DWORD dwThreadId // thread identifier);函数功能:该函数将一个应用程序定义的挂钩处理过程安装到挂钩链中去,您可以通过安装挂钩处理过程来对系统的某些类型事件进行监控,这些事件与某个特定的线程或系统中的所有事件相关.具体参数详见MSD 阅读全文
posted @ 2013-12-27 17:56 DoubleLi 阅读(4121) 评论(0) 推荐(0) 编辑

摘要:1、对于模态对话框而言,单击确定以后对话框窗口对象即被销毁了,而对于非模态对话框来说,对话框的对象并未销毁而是隐藏起来(EndDialog函数),因此对于非模态对话框,必须重写OnOK这个虚函数,并在重写的函数中调用DestroyWindow函数,以完成销毁对话框的工作,同时注意不要再调用基类的OnOK函数。2、当一个类从一个基类公有继承时,基类中的公有成员就如同派生类中定义的公有成员一样,这一点用sizeof函数就可以很明显的看出来。所以派生类对基类成员修改时,并不影响基类成员本身。3、对静态文本控件,如果需要让其响应鼠标的按键操作时,必须将其ID改掉,因为其默认是不响应鼠标单击等消息的,并 阅读全文
posted @ 2013-12-27 12:57 DoubleLi 阅读(473) 评论(0) 推荐(0) 编辑

摘要:Group就其意思就是一组的意思。就是说用于选择多个控件组合,选了TRUE后,你就可以为这组新建一个变量。把一组控件当一个控件来使用。例如多个单选按钮用group属性,这样你就可以用一个变量来管理这些按钮,例如获得当前选项什么的。单选按钮在没有设置Group属性时,在右击添加变量时中看不到按钮控件的ID号,设置了Group属性后就可以看到ID号并能设置变量。Group属性是用来对单选按钮进行成组设置的。设置Group属性的Radio是本组的第一个,ID大于本Radio ID的Radio都是本组的radio(但是小于另一个设置Group属性的Radio ID)。一个组只能设置一个控件变量。组内的 阅读全文
posted @ 2013-12-27 12:55 DoubleLi 阅读(1966) 评论(0) 推荐(0) 编辑

摘要:1、在窗口创建前修改窗体外观 在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)函数中修改,其中CREATESTRUCT结构中有诸如窗口大小和标题等的修改,这里注意的是如果要修改标题的话,需要修改CREATESTRUCT style &= ~FWS_ADDTOTITLE,不让默认的文档标题添加到窗口标题上。 在窗口创建后修改窗体外观 就在OnCreate函数里修改,SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE) & ~WS_MAXIMI 阅读全文
posted @ 2013-12-27 12:52 DoubleLi 阅读(1235) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 30 下一页