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库文件支持。

转载于:https://www.cnblogs.com/ostin/p/9213191.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值