zoukankan      html  css  js  c++  java
  • windows工程总结

    1、win32控制台console程序

      运行在MS-DOS环境中的程序。控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序。控制台程序常常被应用在测试、监控等用途,用户往往只关心数据,不在乎界面。

      生产.exe可执行程序。

      通过命令行实现输入输出交互,可直接使用printf,getchar等库函数。

      可直接使用win32 api接口。

      入口是int main(int argc, char* argv[])。

      main()中主要工作包括注册窗口类RegisterClass或RegisterClassEx,循环消息处理(取消息GetMessage,翻译消息TranslateMessage,派发消息DispatchMessage,消息处理WndProc(注册窗口类时会指定该函数来处理消息))。

      不需要创建窗口CreateWindow和显示窗口ShowWindow、UpdateWindow。

    2、win32窗口应用程序

      有独立的窗口实现交互。

      生产.exe可执行程序。

      可直接使用win32 api接口。

      入口是WinMain:

    int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)

      WinMain()中主要工作包括注册窗口类RegisterClass或RegisterClassEx,创建窗口CreateWindow和显示窗口ShowWindow、UpdateWindow,循环消息处理(取消息GetMessage,翻译消息TranslateMessage,派发消息DispatchMessage,消息处理WndProc(注册窗口类时会指定该函数来处理消息))。

      注意:窗口应用程序也可以不用创建和显示窗口,这样就是一个无窗口的应用程序在运行。可通过资源管理器查询运行的进程。

    3、win32动态库程序

      生产.dll文件、

      可直接使用win32 api接口。

      跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。

      对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的。

    BOOL WINAPI DllMain(
    _In_ HINSTANCE hinstDLL, // 指向自身的句柄
    _In_ DWORD fdwReason, // 调用原因
    _In_ LPVOID lpvReserved // 隐式加载和显式加载
    );

      系统是在什么时候调用DllMain函数的呢?静态链接时,或动态链接时调用LoadLibraryFreeLibrary都会调用DllMain函数。DllMain的第二个参数fdwReason指明了系统调用Dll的原因,它可能是::
    DLL_PROCESS_ATTACH、
    DLL_PROCESS_DETACH、
    DLL_THREAD_ATTACH、
    DLL_THREAD_DETACH。
      
      DllMain函数是DLL模块的默认入口点。当Windows加载DLL模块时调用这一函数。系统首先调用全局对象的构造函数,然后调用全局函数DLLMain。DLLMain函数不仅在将DLL链接加载到进程时被调用,在DLL模块与进程分离时(以及其它时候)也被调用。

    4、win32静态库程序

      生产.lib文件、

      可直接使用win32 api接口。

    5、MFC应用程序

      生产.exe文件

      可直接使用MFC封装后的接口,也可使用原生win32 api接口。

      需要MFC库文件支持。

    6、MFC动态库

      生产.dll文件

      可直接使用MFC封装后的接口,也可使用原生win32 api接口。

      需要MFC库文件支持。

  • 相关阅读:
    BootstrapValidator验证规则、BootStrap表格:列参数
    使用JSONObject解析和生成json
    java.Math类常用方法
    Java内存溢出处理
    windows下Ubuntu虚拟机联网配置 + Ubuntu虚拟机代理配置
    C# 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案
    C++ 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案
    asp.net 程序,当发生找不到文件的错误时,如何正确定位是哪个文件?
    MVC 网站部署常见问题汇总
    ASP.NET windows验证IIS配置
  • 原文地址:https://www.cnblogs.com/ostin/p/9213191.html
Copyright © 2011-2022 走看看