上一页 1 2 3 4 5 6 7 8 ··· 14 下一页
摘要: DECLARE_DYNAMICIMPLEMENT_DYNAMIC 当你从CObject派生类的时候,该宏使你的类有能力处理运行时信息(比如类型识别).你可以通过RUNTIME_CLASS宏和CObject::IsKindOf函数在运行时确定你的类的对象的所属类. 支持动态创建和保存装载,所以需要MFC动态创建和序列化的类都需要,比如文档视图MFC创建的。DECLARE_DYNCREATEIMPLEMENT_DYNCREATE 使CObject的派生类可以在运行时动态创建.系统可以该功能动态创建类的对象,举个例子,当你的程序通过序列化从磁盘读取对象数据时,可以动态创建该类的对象.DECLARE_ 阅读全文
posted @ 2013-10-31 10:04 陳さん様 阅读(1935) 评论(0) 推荐(0)
摘要: 注: m_edit1代表ID为IDC_EDIT1的CEdit控件的control类型的变量 m_richedit1代表ID为IDC_RICHEDIT1的CRichEditCtrl控件的control类型的变量1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTemp; m_edit1.GetSel(nStart 阅读全文
posted @ 2013-10-30 16:26 陳さん様 阅读(226) 评论(0) 推荐(0)
摘要: 介绍对于我来说,理解COM(ComponentObjectModel,组件对象模型)绝不亚于一次长途旅行。我相信,每一个想要理解COM之后基本原理的程序员都必须使用普通的C++编写至少一个简单的COM对象,也就是说,不依靠MFC/ATL所提供的任何模板或宏的支持。在本文中,我将要逐步介绍如何从基本原理出发来创建简单的COM对象。这些组件可用于VC/VB的客户端程序。作为练习,我们将要尝试设计一个COM组件,这一组件将要实现假想的快速相加算法。它必须传入两个长数据类型的参数,并返回另一个长参数给用户,也就是相加算法的结果。我们现在开始设计接口。接口COM对象的接口并不涉及到实际的实现,但是它的方 阅读全文
posted @ 2013-10-30 15:49 陳さん様 阅读(224) 评论(0) 推荐(0)
摘要: 什么是DLL? DLL指的是动态链接库(Dynamic Link Library),它是一个可以被多个应用程序(甚至是不同语言编写的应用程序)同时调用的可执行二进制文件,是一个可共享的库。DLL是建立在客户/服务器通信的概念上,包含若干函数、类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL。 在下面我们将通过一个具体的例子来说明如何利用VC.Net定义一个DLL文件,并且在VC.Net的应用程序中调用,这个例子的主要功能是通过DLL获取系统的机器名、操作系统类型和IP地址。 在VC.Net中定义DLL文件 ... 阅读全文
posted @ 2013-10-30 15:22 陳さん様 阅读(346) 评论(0) 推荐(0)
摘要: Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论) Debug 版本: /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG&q 阅读全文
posted @ 2013-10-30 15:19 陳さん様 阅读(132) 评论(0) 推荐(0)
摘要: 如果多选时选中的文件过多,那么后面选中的文件将无效,也就是说即使也白选,点击“确定”后没有任何操作 。本文将提供解决此问题的办法,并说明问题的来由。 一般我们都是象下面这样来设置具备多选能力的 CFileDialog: // 首先创建一个 CFIleDialog 类实例,并设置多选标志1 CFileDialog mFileDlg(TRUE, NULL,NULL, 2 OFN_ALLOWMULTISELECT,3 _T("Text Files (*.txt)|*.txt|All... 阅读全文
posted @ 2013-10-30 15:15 陳さん様 阅读(186) 评论(0) 推荐(0)
摘要: 一.概述 在接下来的部分,首先将就ActiveX组件的概念以及它的分类进行简要的介绍,从而让读者对ActiveX组件有一个概念上的把握。随后,将就如何注册ActiveX组件的问题进行比较深入详细的解释。分别给出ActiveX 控件、ActiveX DLL、ActiveX EXE的具体注册方法。并在此基础上,对如何在制作安装程序并安装后,实现对 ActiveX组件的注册给出了若干解决方案。二.ActiveX组件的概念 在我们平常的阅读和编程学习中,我们经常可以看到诸如“ActiveX控件”,“ActiveX组件”等名词。那么什么是“ActiveX控件”,什么是“ActiveX组件”呢,它们有.. 阅读全文
posted @ 2013-10-30 14:30 陳さん様 阅读(318) 评论(0) 推荐(0)
摘要: 标题:ShellExecute用法作者:不详 摘自:网络首先必须引用shellapi.pas单元: uses ShellAPI; 1.标准用法 ShellExecute函数原型及参数含义如下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Appli... 阅读全文
posted @ 2013-10-30 14:21 陳さん様 阅读(203) 评论(0) 推荐(0)
摘要: ---- Windows95/98的注册表包含了Windows95/98的系统配置、PC机的硬件配置、WIN32应用程序和用户的其他设置信息。注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值组成,而每个键则代表一个特定的配置项目。 ---- 在Visual Basic中可以使用自带的注册表函数(如SaveSetting、GetSetting、GetAllSettings和DeleteSetting)来访问系统的注册表。但遗憾的是,VB的这几个函数只能在系统的注册表的固定位置进行工作,即只能在/KEY_CURRENT_USER/Software/ 阅读全文
posted @ 2013-10-30 14:14 陳さん様 阅读(795) 评论(0) 推荐(0)
摘要: ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序: ...... ASSERT( n != 0); k = 10/ n; ...... ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。 assert()的功能类似,它是ANSI C标准中规定的函数,它与ASS 阅读全文
posted @ 2013-10-30 13:53 陳さん様 阅读(562) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 14 下一页