摘要: 注: 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)
摘要: 在一个WIN32程序中,WINDOWS会将消息传递给相应的窗口。但是消息不是立即就被传递给相应的窗口,而是会从整个程序最顶层的窗口传递到下一级窗口,再传递到下一级窗口,直到传递给目标窗口。在整个过程中,有些消息,在某些特定的情况下,无法默认传递到目标窗口的。比如用户在EDIT控件中按下回车键,CANCEL键等,如果EDIT窗口之前有对话框窗口,对话框会默认处理回车消息(即响应ONOK函数,然后关闭对话框),然后退出消息传递。所以EDIT会收不到。要解决这个问题,可以在EDIT窗口之前所有的对话框中重载PreTranslateMessage函数,然后在函数内加上:if (pMsg->mes 阅读全文
posted @ 2013-10-30 13:29 陳さん様 阅读(1376) 评论(0) 推荐(0)
摘要: 1. 前言 本文用于介绍TCP/IP协议的最基本内容,十分简单,也十分基本,如果希望了解详细的内容,请参阅其它资料,这只是给初学者用的。 2. TCP/IP介绍 TCP/IP通常指的是关于TCP和IP的任何东西,它是一个统称,它既可以包括其它协议,其它应用程序,还可以包括网络介质。 2.1 基本结构 这个结构存在于Internet中计算机之中,它决定了计算机在网络上的动作。 2.2 名词 数据块的名称会因为它处于不同的协议栈而不同。这里给出一个总结:在以太网时,它称为一个以太网帧,在IP上时,它称为IP包,如果数据在IP和UPD之间一般称为UDP数据报,而数据如果在IP和TCP之间,则称为TC 阅读全文
posted @ 2013-10-30 13:27 陳さん様 阅读(210) 评论(0) 推荐(0)
摘要: ComboBox是比较常用的一个控件,有三种样式:CBS_SIMPLE(简单),CBS_DROPDOWN(下拉),CBS_DROPDOWNLIST(下拉列表),其中下拉列表样式是不允许输入的,简单样式是永远都显示下拉框的。ComboBox是由一个ListBox和一个Edit框组合而成。本文将以限制只能输入电话号码为例介绍子类化过程得到Edit框(类似的可以得到ListBox)。电话号码只能有数字和“-”和“+”组成,经查ASCII表,知道对应的ASCII值为48-57及45和43共12个值。好,闲话暂停,开始子类化之旅。第一步 先建立一个MFC应用程序工程,取名叫UseSuperCombox. 阅读全文
posted @ 2013-10-30 11:20 陳さん様 阅读(467) 评论(0) 推荐(0)
摘要: MFC所提供的组件已经可以完成很多功能了,但有时候我们还需要这些控件按我们自己的意图去处理。比如EDIT控件,虽然我们可以设置EDIT控件为只能接受数字属性,但如果我们还需要它可以接收数字意外的字符,比如需要控件只能接收"2004-02-20"这样的格式的日期字符呢?我们需要自己在WM_CHAR消息里面来处理输入的字符。可是,当输入字符后,Windows会向Edit控件发送WM_CHAR消息,应用程序会调用Windows默认的Edit控件窗口处理函数WndProc来处理该控件。这时我们需要通过子类化将该窗口对象与自己的Edit类连接起来,这样,该类的的消息处理函数会替代原来 阅读全文
posted @ 2013-10-30 10:09 陳さん様 阅读(233) 评论(0) 推荐(0)