#include<windows.h>
#include<stdio.h>

/*

以下为定义的回调函数,回调函数的机制:

  ①定义一个回调函数。

  ②提供函数实现的一方在初始化的时候,将回调函数的指针注册给调用者。

  ③当特定的事情或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

针对window的处理机制,窗口过程函数,被调用的过程如下:

  ①再设计窗口类的时候,将窗口过程函数的地址赋值给lpfnWndProc成员变量;

  ②调用RegisterClass(&wndclass)注册窗口类,那么系统就有了我们所编写的窗口过程函数的地址。

  ③当应用程序接收到某一窗口的消息是,调用DispatchMessage(&msg)将消息回传给系统。系统则利用先前注册窗口类是得到的函数指针,调用窗口过程函数对消息进行处理。

*/

LRESULT CALLBACK WinBenProc(

HWND hwnd,                
UINT uMsg,
WPARAM wParam,
LPARAM lParam);

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
//设计一个窗口类
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinBenProc;
wndcls.lpszClassName="bingo2012";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);

//创建窗口
HWND hwnd;
hwnd=CreateWindow("bingo2012","吾辈何以为战",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
//显示及刷新窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
//定义消息结构体,开始消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//编写窗口过程函数
LRESULT CALLBACK WinBenProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char code is %d",wParam);
MessageBox(hwnd,szChar,"char",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"斌哥不骗你",strlen("斌哥不骗你"));
//ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hDc=BeginPaint(hwnd ,&ps);
TextOut(hDc,0,0,"http://weibo.com/527712389",strlen("http://weibo.com/527712389"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束","message",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}

转载于:https://www.cnblogs.com/mbigger/archive/2012/08/19/2646913.html

从WinMain函数看Windows程序内部运行机制相关推荐

  1. 孙鑫-MFC笔记一--Windows程序内部运行机制

    对于一个初学者来说,常常会用到各种库函数,例如printf等等,这些库函数是由你所使用的编译器厂商提供的,在Windows操作系统下,开发的应用程序, 也有这样的库函数,不同的是,这样的库函数,是有w ...

  2. VC++的学习(基于VS2008)——windows程序内部运行机制

    昨天和今天都在学习windows程序的内部运行机制,再次学习这一章,我明显感到条理清晰了,原来这一章是讲我们所用的电脑,这样一个windows平台下程序运行的内部机制的.windows应用程序下最重要 ...

  3. 《VC++深入详解》学习笔记 第一章 Windows程序内部运行机制

    (金光鳞闪影若茫) 窗口四步走: 设计窗口类 注册窗口类 创建窗口 显示更新窗口 最后创建消息循环和响应函数 设计窗口类: typedef struct {UINT style;//窗口类型 WNDP ...

  4. 孙鑫VC++LESSON1:Windows程序内部运行原理

    视频链接:https://www.bilibili.com/video/BV1Ts411f7fw/?spm_id_from=333.337.search-card.all.click&vd_s ...

  5. Windows程序内部运行原理

    Windows程序内部运行原理   为了理解Visual C++应用程序开发过程,先要理解Windows程序的运行机制.因为 Visual C++是 Windows 开发语言,需要明白在 Window ...

  6. Windows程序内部运行原理(2)

    Windows程序内部运行原理   为了理解Visual C++应用程序开发过程,先要理解Windows程序的运行机制.因为 Visual C++是 Windows 开发语言,需要明白在 Window ...

  7. VC++学习(1):Windows程序内部运行原理

    Windows应用程序,操作系统,计算机硬件之间的相互关系 关于API:向下的箭头③表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需 ...

  8. 【MFC】1.Windows程序内部运行原理

    1.原理与内容 Windows应用程序,操作系统,计算机硬件之间的相互关系: 向下的箭头③表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声 ...

  9. XFC演示-使用C语言通过WinAPI函数编写Windows程序

    XFC演示-使用C语言通过WinAPI函数编写Windows程序 1,目标效果: 2,代码片段: winMain.c /*!\file winMain.c\version v1.00\date 10/ ...

  10. 分析内部运行机制,教你解决Redis性能问题

    摘要:聚焦Redis的性能分析,思考Redis 可以通过哪些机制来提高性能,当性能瓶颈发生的时候,我们又能做出哪些优化策略,最终确保业务系统的稳定运行. 本文分享自华为云社区<分析内部运行机制, ...

最新文章

  1. pg GUI Tools
  2. 抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret
  3. C#从excel中将数据导出到datatable
  4. MyBatis 源码解读-pluginElement()
  5. c++远征之模板篇——静态数据成员,静态成员函数
  6. 数据结构(二)冒泡排序
  7. python小白教程-面向小白的Python教程:入门篇(六)
  8. 翻翻git之---炫酷的自己定义翻滚View TagCloudView
  9. SpringBoot java配置类@Configuration 的两种写法
  10. momentum、Adagrad、RMSProp、Adam梯度下降总结
  11. find命令日常用法和文件名后缀
  12. 图论(5)邻接谱,邻接代数,图空间,托兰定理
  13. 转 - DataGuard中如何配置LOG_ARCHIVE_DEST_n参数
  14. 盘点无线互联网战国七雄
  15. h5案例分享:王中军个人画展:藝術東西,玄如藝術
  16. 荣耀 MagicBook V 14 2022款评测
  17. js 百度地图选择某个位置(选点),获取经纬度信息。
  18. 离散数学程序实践——判断是否(反)自反,(反)对称,可传递——c
  19. Alternate Realities大赛作品引发的思考(二)——如何完全按照自己的思路制作一个toon shader
  20. reading 摘录二

热门文章

  1. [新闻]华为发布最高端核心路由器NE5000E集群系统
  2. 猜字游戏python程序_python 猜字游戏
  3. UML10种图例之包图
  4. 下载电驴屏蔽资源办法
  5. android 桌面 弹出窗口,android – 弹出窗口在来电屏幕上像truecalle...
  6. 改变鼠标样式的两种方法
  7. java web 徐林林_零点起飞学Java Web开发 (徐林林) 高清PDF
  8. 网络恶趣实验——二层广播风暴
  9. 广西壮族自治区公安厅信息中心异地容灾系统(三期)采购185万
  10. 别学英语了!微软给PPT和Skype新加的这个功能,让你和老外从此交流无障碍