work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年11月19日

摘要: 基于 Visual C++6.0 的 DLL 编程实现 一、前言 自从微软推出 16 位的 Windows 操作系统起,此后每种版本的 Windows 操作系统都非常依赖于动态链接库 (DLL) 中的函数和数据,实际上 Windows 操作系统中几乎所有的内容都由 DLL 以一种或另外一种形式代表着,例如显示的字体和图标存储在 GDI DLL 中、显示 Windows 桌面和处理用户的输入所需要的代码被存储在一个 User DLL 中、 Windows 编程所需要的大量的 API 函数也被包含在 Kernel DLL 中。 在 Windows 操作系统中使用 DLL 有很多优点,最主要... 阅读全文

posted @ 2011-11-19 21:23 work hard work smart 阅读(366) 评论(0) 推荐(0)

摘要: c++中指针,指针的引用,指针的指针的区别看例子和结果:#include"stdafx.h"#include<iostream>usingnamespacestd;voidFreePtr1(int*ptr1){deleteptr1;ptr1=NULL;}voidFreePtr2(int*&ptr2){deleteptr2;ptr2=NULL;}voidFreePtr3(int**ptr3){delete*ptr3;*ptr3=NULL;}voidmain(){cout<<"------------------------------ 阅读全文

posted @ 2011-11-19 14:27 work hard work smart 阅读(224) 评论(0) 推荐(0)

摘要: 内存分配方式有三种:(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集 阅读全文

posted @ 2011-11-19 14:11 work hard work smart 阅读(2277) 评论(0) 推荐(0)

2011年11月18日

摘要: 一、前言 1、本回讲解的是在VS 2008 下的使用ATL. 并使用Win 32 Console Application进行测试以及C#项目进行测试(调用COM). 2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFunTest,它有一个简单的函数: Sum()完成两个数值的加法 3、ATL的介绍 ATL本来被设计成一种书写快捷的小的COM组件。 ATL特性:(1)C++能完成的所有功能。(2)没有外部程序库,除非你想要使用它。(3) 一种抽象对象和接口的相对高级的方式。 (4)类集合的自动处理,目标创建,参考... 阅读全文

posted @ 2011-11-18 15:44 work hard work smart 阅读(6209) 评论(2) 推荐(2)

摘要: 方法一、放在Bat文件中"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\tlbimp.exe" E:\...\Projectname.tlb /out:E:\...\InteropFiles\Interop.ProjectnameLib.dll /namespace:ProjectnameLib/nologo方法二、属性配置参考:.Net互操作性 http://www.cnblogs.com/linlf03/archive/2011/09/24/2189621.html 阅读全文

posted @ 2011-11-18 11:17 work hard work smart 阅读(959) 评论(0) 推荐(0)

摘要: 1、#include<iostream.h>#include <time.h>#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>void main( void ){ struct stat buf; int result; //获得c:\Windows\Calc.exe文件的信息 result =stat( "c:\\windows\\Calc.exe", &buf ); //显示cal.exe的文件状态信息 if( result != 阅读全文

posted @ 2011-11-18 10:01 work hard work smart 阅读(277) 评论(0) 推荐(0)

2011年11月17日

摘要: C++匿名枚举的功能等价于静态常成员变量。也就是说结构体名::枚举变量名 = 3; //错误枚举变量名 = 3;//错误int x = 结构体名::枚举变量名//正确int x = 枚举变量名 //正确 阅读全文

posted @ 2011-11-17 17:35 work hard work smart 阅读(809) 评论(0) 推荐(0)

摘要: C++强大的背后转自:http://www.cnblogs.com/miloyip/archive/2010/09/17/1828449.html在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,. 阅读全文

posted @ 2011-11-17 16:39 work hard work smart 阅读(242) 评论(0) 推荐(0)

摘要: 字节长度,字节对齐以及类,对象的长度struct st { short num; float math_grade; float Chinese_grade; float sum_grade;};int _tmain(int argc, _TCHAR* argv[]){cout << " sizeof('$')= " << sizeof ( ' $ ' ) << endl; cout << " sizeof(1)= " << sizeof ( 1 ) <&l 阅读全文

posted @ 2011-11-17 16:15 work hard work smart 阅读(1308) 评论(0) 推荐(0)

摘要: int & *p; //不能建立指向引用的指针;int *a; int * & p=a; //正确,指针变量的引用引用和指针使用原则: 1.在可以用引用的情况下,不要用指针; 2.引用不允许重新赋值.,当使用一个变量指向不同的对象时,必须用指针; 3.引用不允许为空,当存在对象为空时,必须使用指针。引用说明: (1) double & rr=1; 等价与 double temp; temp=double(1); double & rr=temp; (2) int *a; int * & p=a; int b=8; p=&b; //正确,指针变量的 阅读全文

posted @ 2011-11-17 14:58 work hard work smart 阅读(911) 评论(0) 推荐(0)

摘要: // ----------------------------------------------- char * GetMemory2( void ){ char p[] = " hello world " ; return p;} void Test2( void ){ char * str = NULL; str = GetMemory2(); printf(str);} // ----------------------------------------------- void GetMemory3( char ** p, int nu... 阅读全文

posted @ 2011-11-17 14:05 work hard work smart 阅读(285) 评论(0) 推荐(0)

摘要: 1 、函数指针的定义int (*fp)(int a);//定义了一个指向函数的指针int *fp(int a);//错误,这是一个返回整形指针的函数了,而不是函数指针。int _tmain(int argc, _TCHAR* argv[]){ //////////////////////////////////////////////////////////////////////////Example1 cout << FuncTestMethod <<endl; //输出函数地址 int (*fPtr)(int i);//定义函数指针 fPtr = FuncTest 阅读全文

posted @ 2011-11-17 13:44 work hard work smart 阅读(286) 评论(0) 推荐(1)

摘要: 1. 一般常量 int const x=2; 或 const int x=2; 当然x也可是一个数组,如x[5];int可以被替换为是类名,x为对象名,此时常对象。 int如果被替换为char*,此时为常指针 如:char* constx 或 const char* x;常引用的格式为 const <类型说明符> & <引用名> 例如:const double & x;2、下面举一例子说明常指针作函数参数的作法。#include <iostream>using namespace std;const int N = 6;void print( 阅读全文

posted @ 2011-11-17 12:15 work hard work smart 阅读(225) 评论(0) 推荐(0)

摘要: ASSERT 和 _ASSERTE 头文件:用法 : _ASSERT( booleanExpression ); _ASSERTE( booleanExpression ); 解释 : 这两个宏具有更加丰富的调试功能。 阅读全文

posted @ 2011-11-17 10:09 work hard work smart 阅读(960) 评论(0) 推荐(0)

摘要: C++字符串完全指引之一 —— Win32 字符编码原著:Michael Dunn翻译:Chengjie Sun原文出处:CodeProject:The Complete Guide to C++ Strings, Part I 引言 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各种字符串类型之间的转换。 在第一部分,我们将介绍3种字符编码类型。了解各种编码模式的工作方式是很重要的事情。... 阅读全文

posted @ 2011-11-17 09:39 work hard work smart 阅读(250) 评论(1) 推荐(0)

2011年11月16日

摘要: 1、tlb、tlh和tli文件tlb文件:com类型库文件。在需要使用对应com类的模块里,“#import ...*.tlb”使用之。tlh、tli文件:他们是vc++编译器解析tlb文件生成的标准c++文件。因为odl和tlb并不是C++标准的东东,有必要把它们翻译成标准的C++类型,使得C++开发者可以使用。相信vb和j++也会把tlb翻译成自己语言兼容的类型描述信息。tlh相当于类型申明(头文件),tli相当于定义实现(CPP文件)。备注一个重要的相关问题: 在VC下#import "A.tlb" no_namespace named_guids;编译后产生A.tl 阅读全文

posted @ 2011-11-16 17:22 work hard work smart 阅读(3698) 评论(0) 推荐(0)

摘要: AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用:用于模块切换时的状态保护,1.AfxGetStaticModuleState()指向当前模块状态;2.当前函数调用结束后原模块的状态自动被恢复;3.用于DLL中所调用MFC函数、类、资源时的模块状态切换;[MSDN]By default, MFC uses the resource handle of the main application to load the resource template. If you have an exported function in a DLL, such a 阅读全文

posted @ 2011-11-16 15:37 work hard work smart 阅读(13150) 评论(1) 推荐(0)

摘要: 一、extern "c "的作用:用来告诉编译器,该函数是用C语言编写的. 二、以下几种使用方式:1.extern "c " void exit(int)//包含c语言中编写的exit函数. 2.extern "c "{ int printf(const char* ....); int scanf(char *...) ; ....}//包含c语言中编写的一组函数. 3.extern "c "{#include <cmath> }包含标准c库中的函数.三、补充1,extern可以置于变量声明前;2,e 阅读全文

posted @ 2011-11-16 15:28 work hard work smart 阅读(346) 评论(0) 推荐(0)

摘要: 在编程时,也许你会看到函数声明或定义中会出现CALLBACK和WINAPI两个宏。其实,它们也是__stdcall的代名词。看windef.h中的内容:#define CALLBACK __stdcall#define WINAPI __stdcall__stdcall是调用类型.调用类型有:__fastcall、__cdecl、__stdcall。1、__cdecl调用类型: 这是C的调用规则。对于所有非C++成员函数或未标有__stdcall或__fastcall的函数来说,这是默认调用规则。2、__fastcall调用类型:这是一种快速调用。因为CPU的寄存器会被使用来存放函数参数列表. 阅读全文

posted @ 2011-11-16 15:21 work hard work smart 阅读(1165) 评论(1) 推荐(2)

摘要: 为了避免同一个文件被include多次,可以使用以下两种方式1 #ifndef方式 2 #pragma once方式方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif方式二: #pragma once ... ... // 一些声明语句 包含pragma once语句的文件只会被编译一次。 表示在编译的时候, 这个文件只被包含(include)一次。这样, 可以减少整个编译过程中打开这个文件的次数 参考:http://www.cnblogs.com/figo/archive/20... 阅读全文

posted @ 2011-11-16 15:06 work hard work smart 阅读(845) 评论(0) 推荐(0)