博客首页
  • 用户名
  • 密码
  • 验证码
  • 网校首页
  • 博客首页
  • 论坛首页
逍遥游!!
乘天地之正,而御六气之辩!
个人资料
_lzt_ 性别:男    所在地:北京市
2010年12月31日 11:16

http://blog.sina.com.cn/s/blog_54c746f4010009cm.html我们从一个ACE例子进行分析: ACE程序中的ACE_TMAIN宏说明: 大家注意看我代码中的注释 先看原代码: //————————————– //copy from: ACE_ROOT/ace/OS_main.h //ACE_TMAIN define #     define ACE_TMAIN  ace_tmain_i (int, ACE_TCHAR *[]);  //***我们自己的代码会添加到这个函数中,进行调用 ACE_Export int ace_os_wintmain_i (ACE_Main_Base&, HINSTANCE, HINSTANCE, LPWSTR, int);  /* forward declaration */  class ACE_Main : public ACE_Main_Base {int run_i (int argc, ACE_TCHAR *argv[]);};  inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[])   {    return ace_tmain_i (argc, argv);  //***调用我们编写的代码 }  int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)  //***程序真实的入口 {    ACE_Main m;  //***定义一个ACE_Main对象,并传给ace_os_wintmain_i,在ace_os_wintmain_i中,会调用m.run_i()   return ace_os_wintmain_i (m, hInstance, hPrevInstance, lpCmdLine, nCmdShow);  }  int ace_tmain_i //***ACE为们提供一个函数头,函数体由我们自己来写。 //ACE_TMAIN end. //————————————- //————————————- // copy form ACE_ROOT/ace/OS_main.cpp //ace_os_wintmain_i define  int WINAPI ace_os_wintmain_i (ACE_Main_Base &mbase, HINSTANCE hInstance,                               HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) {   ACE_TCHAR cmdline[1024];   ACE_OS::strcpy (cmdline, ACE_LIB_TEXT (”program ”));   ACE_OS::strcat (cmdline, lpCmdLine);   ACE_ARGV ce_argv (cmdline);   ACE::init (); //***注意,对ACE环境时行初始化   ACE_MAIN_OBJECT_MANAGER    //***注意下边这行代码。mbase.run()中,会去调用我们在外边定义的run_i(),这是一个虚函数 //***而run_i()中会调用ace_tmain_i(),这才是我们要自己要运行的代码   int i = mbase.run (ce_argv.argc (), ce_argv.argv ());   ACE::fini (); //***注意,释放ACE环境   return i; } //ace_os_wintmain_i end //————————————- 例子: //我写一ACE的代码,并将宏进行还原: //ACE代码: int ACE_TMAIN(int args, ACE_TCHAR *argv[]) { int a = 0; int b = 1; a = a + b; } //将宏还原后的真实代码: int /*ACE_TMAIN strat*/ ace_tmain_i (int, ACE_TCHAR *[]);  //注:ace_os_wintmain_i是从ace库中导出的函数,直接用函数体来代替这个声明: //ACE_Export int ace_os_wintmain_i (ACE_Main_Base&, HINSTANCE, HINSTANCE, LPWSTR, int); int WINAPI ace_os_wintmain_i (ACE_Main_Base &mbase, HINSTANCE hInstance,                               HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) {   ACE_TCHAR cmdline[1024];   ACE_OS::strcpy (cmdline, ACE_LIB_TEXT (”program ”));   ACE_OS::strcat (cmdline, lpCmdLine);   ACE_ARGV ce_argv (cmdline);   ACE::init ();   ACE_MAIN_OBJECT_MANAGER   int i = mbase.run (ce_argv.argc (), ce_argv.argv ());   ACE::fini ();   return i; } class ACE_Main : public ACE_Main_Base  { int run_i (int argc, ACE_TCHAR *argv[]); };  inline int ACE_Main::run_i (int argc, ACE_TCHAR *argv[])   {     return ace_tmain_i (argc, argv);  }  int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)  {    ACE_Main m;    return ace_os_wintmain_i (m, hInstance, hPrevInstance, lpCmdLine, nCmdShow);  }  int ace_tmain_i /*ACE_TMAIN end*/ ( int args, ACE_TCHAR* argv[]) { int a = 0; int b = 1; a = a + b; } //end WinMain  -call-> ace_os_wintmain_i [进行ACE环境的初 始] -call-> ACE_Main_Base::run() -call->ACE_Main::run_i()  -call-> ace_tmain_i[运 行我们自己的代码] WinMain  <-ret- ace_os_wintmain_i [释放ACE环境] <-ret- ACE_Main::run_i()  <-ret- ace_tmain_i 还有,我上边列出来的ACE_TMAIN只是其中之一,ACE做了好几个程序入口函数的宏替换: 如:main,wmain 说明: ACE对我们的程序入口,进行到替换. 在程序启动和退出时,做了一些初始化工作。 其中最主要的工作就是:  ACE::init()  和  ACE::fini(); 再说明我MFC吧,MFC将程序入口,包在了CWinApp类中。所以ACE没有办法对其进行修改。 也就没有办法在MFC中做一些“自动”的初始化和释放工作; 那么这个工作就只有我们自己完成了… 所以在MFC的工程中使用ACE,就得自己调用初始化: ACE::init(); 和释放:ACE::fini() 如果不调!!!呵呵。那就只好等着出错了。:)

日志分类:c  阅读(297) | 评论(0) | 打印

2010年12月30日 15:37

http://www.cppblog.com/converse/archive/2010/04/19/113023.htmlCallback是这样的一类对象(在这里不能简单的理解为”回调函数”了):你注册一个函数,以及调用它时的参数,希望在满足某个条件时,以这些注册的函数调用这个回调,完成指定的操作.很多地方会使用到这个概念.比如,UI程序中,注册一个函数,当某个鼠标事件发生的时候自动调用;比如,创建一个线程,线程开始运行时,执行注册的函数操作.Callback的出现,本质上是因为很多操作都有异步化的需要—你不知道它什么时候会执行,只需要告诉它,在执行的时候,调用我告诉

日志分类:c  阅读(372) | 评论(0) | 打印

2010年12月27日 09:44

早上公交。
在路过的每一个丁字、十字、井字和其它各种路口,所在公交车成功赶上了所有红灯!!!

日志分类:默认分类  阅读(210) | 评论(0) | 打印

2010年12月23日 10:38

作者:heiyeluren
时间:2008-12-5
博客:http://blog.csdn.net/heiyeshuwu

本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速学习的朋友了解一下制作过程。
需求:比如开发一个叫做 heiyeluren 的扩展,扩展里就一个函数 heiyeluren_test(),输入一个字符串,函数返回:Your input string: xxxxx。要求:了解C/C++编程,熟悉PHP编程环境:下载一份php对应版本的源码,我这里是 echo "


日志分类:c  阅读(377) | 评论(1) | 打印

2010年12月10日 11:01

http://www.cppblog.com/xyjzsh/archive/2010/10/15/130044.html总体简介:
由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类型,他紧紧是一个宏。我们都知道,宏在预编译的时候会被替换成相应的内容。TCHAR 在使用多字节编码时被定义成char,在Unicode编码时定义成wchar_t。

1.VC++中的char,wchar_t,TCHAR
大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人

日志分类:c  阅读(471) | 评论(1) | 打印

2010年12月10日 10:49

1.《蓝莓之夜》一个人总要走陌生的路,看陌生的风景,听陌生的歌,然后在某个不经意的瞬间,你会发现,原本是费尽心机想要忘记的事情真的就那么忘记了。One is always on a strange road, watching strange scenery and listening to strange music. Then one day, you will find that the things you try hard to forget are already gone.2.《飞屋环游记》幸福,不是长生不老,不是大鱼大肉,不是权倾朝野。幸福是每一个微小的生活愿22部电影,22句箴言,经典到想要哭

日志分类:默认分类  阅读(226) | 评论(1) | 打印

2010年12月08日 16:44

在子窗口类方法中(CStuDlg为父窗口):
extern CStuApp theApp;   CStuDlg *dlg = (CStuDlg *)theApp.m_pMainWnd;     dlg->test();

日志分类:c  阅读(250) | 评论(0) | 打印

2010年12月08日 10:52

1、IShellFolder接口  IShellFolder是Windows Shell 程序对目标进行管理的一个重要接口。每一个目录对于一个  实例化的IShellFolder接口,包括EnumObject、GetAttributesOf、GetDisplayNameOf等2、IEnumIDList 接口   这个借口提供了一组标准的方法,用于遍历PIDL,包括Clone、Next、Reset、Skip等BOOL FindFileInRecycleBin(TCHAR *fileToFind){    // IShellFolder接口    IShellFolder *pisf

日志分类:c  阅读(349) | 评论(0) | 打印

2010年12月07日 08:31

master.cf 配置文件详解以下为例,按顺序分别说明各栏的意义以及它们的默认值   1           2      3       4       5      6       7      8cyrus      unix    -       n       n       -        -    pipe  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${ extension }1、服务名称(server name)    服务器组件的名称。实际的命名规则,随该服务的传送类型(第二栏)而定。2、传送方式

日志分类:postfix  阅读(447) | 评论(0) | 打印

2010年12月02日 19:50

http://www.codeproject.com/KB/COM/CompleteActiveX.aspxThis article is intended to help you get up to speed quickly with developing an ActiveX control. It will show you the basic concepts you need to know about ActiveX, such as methods, properties, and events, and how to communicate between ame>

VALUE="Submit" ONCLICK=PassParameter()>

日志分类:c  阅读(345) | 评论(0) | 打印



array(2) { ["submit"]=> string(0) "" ["s"]=> string(0) "" } here