摘要:摘要: 本文对COM组件中的ActiveX控件的MFC开发方法进行了介绍,讲述了用户自定义和库存属性、方法以及事件的添加方法和属性页的制作过程。使读者能够掌握基本的MFC ActiveX开发方法。 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。 ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的IDispat...
阅读全文
随笔分类 - VC/MFC
摘要:程序在windowsXP和Windows7 32系统下运行的好好的,今天装了一个windows7 64位系统(说明,程序本身还是32位开发的),运行时出现“0xC015000F 正在被停用的激活上下文不是最近激活的”这个错误,找了好长时间才解决,下面总结如下: 网上提到较多的方法是在调用CWinApp::InitInstance();接口后面使用afxAmbientActCtx = FALSE;我采用这个方法后确实不会出现这个问题,不过我的程序中有一些代码由于把这个变量设成false后导致不执行,所以会出现其他问题,所以放弃该方法。我采用的方式是将Debug时所有MFC异常都抛出,不让MFC.
阅读全文
摘要:1.打开VC6.0,新建工程,选择:MFC ActiveX ControlWizard,后面步骤默认即可;2.在ClassView上,可以看到主要有**App\**Ctrl\**ProgPage几个类,其中接口主要在**Ctrl内实现,可以通过MFC ClassWizard(ctrl+w快捷键)的Automation页建立接口函数;3.接口函数是对外,因此在参数类型定义上要注意,字符我一般用LPCTSTR,如下面函数: void COnOcxCtrl::CallOcx(LPCTSTR devip) {// TODO: Add your dispatch handler code hereAfx
阅读全文
摘要:摘要: 本文主要对VC++ 6.0的MFC编程方法及MFC应用程序框架进行简要介绍。 关键词: VC++6.0;MFC;程序框架 1 MFC概述 顾名思意,MFC应用程序框架是以MFC作为框架基础的,以此程序框架模式搭建起来的应用程序在程序结构组织上是完全不同于以前的Win32 SDK编程方式的。自20世纪90年代初问世以来,MFC一直试图把Windows API函数封装到类库中个各个逻辑类中。MFC的这种封装并非简单地对API函数进行分组与打包,而是更多地通过类来试图实现全部的系统策略。随着越来越多系统功能的加入,MFC的规模也在不断拓展,目前已包括有200多个类,涵盖了通用Windo...
阅读全文
摘要:对于程序员来说,如果要提高编程效率,一个好用的,功能强大的并且可以得心应手使用的编程工具往往会给我们程序员带来莫大的方便。其实对于现在的编程工具来说,使用哪一种工具都不是问题的关键,重要的是你能够使用到什么程度,毕竟现在的工具都是非常的强大,对于一般的编程任务来说还没有不能够胜任的工具,否则的话恐怕他就不可能在这个世界上存在哪怕是只有一个月的生命。 但是根据个人所好以及周围的人的影响,我们都会去使用某一种或者几种工具。比较Visual Basic 、C++ Builder和Delphi等编程工具,用VC++编写Windows应用程序可以说是最富于挑战性和艰巨性。在本文中我无意去比较各种工具的好
阅读全文
摘要:我们在调用WINDOWS函数的时候,经常要在后面加一条GetLastError()来取得函数出错的错误码以及原因,如果在调试的状态中,WINAPI出错了,那我们又要停下来,加一句GetLastError(),然后再跑。这样调试起来很不方便。其实我们可以使用VC里的一些固定符号来进行调试。下面说一下第一个@ERR,我们等函数执行完,并确定它出错了,那我们就可以在VC 的 WATCH窗口里加上@ERR,那我们就马上可以看到出错的错误码了。如果我们还想知道错误码的意思,那我们可以加上@ERR,hr,这样错误码和出错信息都清清楚楚的显示出来了。这个调试方法是不是很棒?其实这种伪符号还有一个用处,在我们
阅读全文
摘要:Windows编程中一个比较原始的问题就是消息循环,现在很少有人关心这些了; 我个人对消息循环比较感兴趣,对底层的很多细节想深入了解! 以下说明几个消息循环中的常用函数进行对比 1 PostMessage 与 SendMessage 函数对比 SendMessage把消息直接发送到窗口,并调用此窗口的相应消息处理函数,等消息处理函数结束后SendMessage才返回!SendMessage发送的消息不进入系统的消息队列;SendMessage函数有返回值 PostMessage将消息发送到与创建窗口的线程相关联的消息队列后立即返回;PostMessage函数没有返回值; 2 Ge...
阅读全文
摘要:消息映射、循环机制是Windows程序运行的基本方式。VC++ MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。在MFC ClassWizard中不允许添加用户自定义消息,所以我们必须在程序中添加相应代码,以便可以象处理其它消息一样处理自定义消息。通常的做法是采取以下步骤: 第一步:定义消息。 推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。#define WM_MY_MESSAGE (WM_USER+100) 第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。 ...
阅读全文
摘要:如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对话框。 一、创建MFC扩展DLL 步骤: 运行Visual Studio 6.0->File->New...->Projects; 选择Mfc AppWizard(dll),在右边Project name下输入ExportClass,单击“下一步”; 选择Mfc Extension DLL (using share MFC DLL) 单击“finish”; 以上完成建立扩展D..
阅读全文
摘要:最近在学习MFC的过程中,看到一个窗口动画特效例子,不过它是在一个对话框里面嵌入效果,我想如果能把它的代码提取出来再写成一个窗口动画类就好了。于是便着手写了这个类,你可以去CSND下载(http://download.csdn.net/source/2196359)这个代码运行看看。闲话少说,先看看这个类的声明:/******************************************//************CDlgFlash.h*******************//************ Author:Arlin *****************//*********
阅读全文
摘要:1、新建一个MFC AppWizard项目,选择选基于文档或者对话框都可以。2、添加两个图片,如下,第二张图片把第一张图片的中间部分镂空,也即删除该部分区域,让背景透明 3、添加位图资源,导入上面的那两张图片。 4、新建一个基类为CWnd的类TransparentWnd,代码如下:头文件:[cpp:collapse] + expand sourceview plaincopyprint?//TransparentWnd.H #if!defined(AFX_TRANSPARENTWND_H__INCLUDED_) #defineAFX_TRANSPARENTWND_H__INCLUDED_ #.
阅读全文
摘要:新建一个MFC Wizard项目,基于对话框。我们来看看下面这段代码:[cpp] view plaincopyprint?SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)^0x80000);//加载dll HINSTANCEhInst=LoadLibrary("User32.dll");if(hInst){typedefBOOL(WINAPI*Fun)(HWND,COLORREF,BYTE,DWORD);Funfun=NULL;//找到dll中的SetLayere
阅读全文
摘要:添加鼠标左键按下响应函数:1、声明afx_msg void OnLButtonDown(UINT nFlags, CPoint point);2、消息映射BEGIN_MESSAGE_MAP(CDddDlg, CDialog) //{{AFX_MSG_MAP(CDddDlg) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAPEND_MESSAGE_MAP()3、实现函数void CDddDlg::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/
阅读全文
摘要:气泡提示和气球提示是不一样的,如果要实现气球提示(经常在系统栏弹出的提示)需要去微软网站下载新的SDK才能支持。我们来看看气泡提示是怎么样的。1、写一个类继承CToolTipCtrl。2、在类中添加下列方法BOOL AddTool(UINT nID,LPCTSTR Text){ TOOLINFO ti; memset(&ti,0,sizeof(TOOLINFO)); ti.cbSize=sizeof(TOOLINFO); ti.hwnd=this->GetOwner()->GetSafeHwnd(); ti.uFlags=TTF_IDISHWND|TTF_SUBCLASS;
阅读全文
摘要:一、DLL简介它是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含
阅读全文
摘要:VC6.0 支持三种dll,如下Non-MFC Dlls(非MFC dll);指的是不用MFC的类库结构,直接用C语言写的DLL,其输出函数一般是标准的C接口,能被非MFC和MFC编写的应用程序调用。可以用“Win32 应用程序向导”创建非 MFC DLL 项目。Regular Dlls(MFC正规DLL),使用“MFC DLL 向导”创建,又分为静态链接和动态链接两种。Extension Dlls(MFC扩展DLL),使用“MFC DLL 向导”创建,始终动态链接MFC。下面来自MSDN--确定要使用的dll的类型如果 DLL 要使用 MFC,且将由 MFC 或非 MFC 应用程序使用,则必
阅读全文
摘要:文章作者:宋宝华信息来源:天极网原始连接: http://soft.yesky.com/lesson/318/2166818.shtml?412 动态链接库(DLL)是Windows系统的核心,也是COM技术的基础,因此突破动态链接库一直是技术人员的攻坚目标,本期专题将由浅入深的介绍动态链接库的基础慨念、分类、实现和应用。基础慨念1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代...
阅读全文
摘要:在c中使用molloc,free动态分配释放内存,而在c++中可以使用new delete运算符。比如在c中定义数组我们可以有两大种方式:1,静态分配内存:如: int a[10];2,使用new动态定义:如: int *p = new int[10];那么这两种方法有什么区别呢??其实,使用new,delete等叫做“动态分配内存”,我们一般定义的int a[10]数组存在函数的整个生命期,也就是说,在一个函数中定义了a[10]数组,那么从定义时起直到这个函数执行完成a[10]数组都会存在,他是静态的,不能由程序员自动的分配释放。而所谓的“动态分配内存”之所以是动态的就是因为我们可以在函数中
阅读全文
摘要:这几天准备论文,涉及到LIb和Dll文件,同学问了一句这两个文件有什么区别,我一时还真说不很清楚,在这里整理一下,以供以后参考。 静态链接库LIB和动态链接库DLL的区别:1. 如果采用静态链接库,lib中的指令都包含在最终生成的exe文件中。如果采用动态的链接库,该dll不必包含在exe文件中。Exe文件执行时,可以动态的加载和卸载这个与exe无关的dll文件。2. 静态链接库不能再包含其他的动态链接库或者静态链接库;而动态链接库不受限制,仍然可以包含其他的动态链接库和静态链接库。VC的动态链接库有三种类型,分别是非MFCdll,MFCdll和MFC扩展dll1. 非MFCdll不采用mfc
阅读全文
摘要:在一些项目中,考虑到系统的安全性和稳定性,经常要封装一些DLL或者LIB库供别人使用,那么怎么制作DLL或者LIB文件呢?今天特酷吧根据自己的实际情况给大家讲解下基本的制作方法。以下是我亲自操作的记录:1,动态库dll的编写方法:新建一个动态链接库:填好工程名称即可选择工程类型,如果没有特别的要求,选择一个空工程即可。会看到这里和标准的控制台工程一样,没有任何系统默认建立的文件下面就需要我们添加一些文件。建立动态库dll文件 , 我们不需要写main函数。只需要一个一个的实现我们需要实现的接口函数即可.这里需要用到extern "C" __declspec(dllexpor
阅读全文