天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧软件 >> 正文

进程和Windows程序的基本概述

2009-9-27不详佚名

       
       



























    C/C++启动函数会调用应用程序的入口点函数。比如我们写了一个_tWinMain函数,且定义了_UNICODE
其调用过程如下:
       GetStartupInfo(&StartupInfo);
       int nMainRetVal = wWinMain((HINSTANCE)&__ImageBase, NULL, pszCommandLineUnicode,
        (StartupInfo.dwFlags & STARTF_USESHOWWINDOW)
         ? StartupInfo.wShowWindow : SW_SHOWDEFAULT);

       如果没有定义_UNICODE,其调用过程将如下所示:
       GetStartupInfo(&StartupInfo);
       int nMainRetVal = WinMain((HINSTANCE)&__ImageBase, NULL, pszCommandLineAnsi,
       (StartupInfo.dwFlags & STARTF_USESHOWWINDOW)
      ? StartupInfo.wShowWindow : SW_SHOWDEFAULT);

       注意_ImageBase是一个链接器定义的伪变量,可执行文件都被映射到应用程序内存中的什么位置以后讨论。
      
       现在 我们如果写了一个_main函数,可以定义?_UNICODE其调用过程如下:
       int nMainRetVal = wmain(argc, argv, envp);
       没定义_UNICODE,调用过程如下:
       int nMainRetVal = main(argc, argv, envp);
      
       另外注意用Visual Studio 生成的应用程序CUI是没有入口点的第3个参数
       int _tmain(int argc, TCHAR* argv[]);
       要自己添加成
       int _tmain(int argc, TCHAR* argv[], TCHAR* env[])
       env参数指向一个参数,所有环境变量和值 都用等号(=)分隔。

    为安全起见 Microsoft 并不赞成使用所有这些变量,因为使用了这些变量代码可能会在C运行库初始化这些变量之前开始执行,因此我们应该直接调用对于的WindowsAPI函数

9 7 3 1 2 3 4 8 :

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行