learning-windows-32 at first
来源:互联网 发布:网络协议栈有什么用 编辑:程序博客网 时间:2024/06/13 23:51
1. WinMain是一个函数,该函数的功能是被系统调用,作为一个32位应用程序的入口点。WinMain函数应初始化应用程序,显示主窗口,进入一个消息接收一发送循环,这个循环是应用程序执行的其余部分的顶级控制结构。
2. 消息循环代码是应用程序中主函数WinMain ( )中类似如下的程序段:
while(GetMessage(&msg,NULL,0,0))
{ //从消息队列中取得消息
TranslateMessage(&msg);
//检索并生成字符消息WM_CHAR
DispatchMessage(&msg);
//将消息发送给相应的窗口函数
}
由此可见,所谓"消息循环",实际是程序循环。
3. 如果说消息循环是程序的心臟,那个窗口过程就是程序的大脑.这里所有送到窗口的消息被处理.
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0;}
窗口过程在每个消息到来时被调用一次,HWND参数是消息相应的窗口的句柄.这很重要因为你可能用相同的类创建了两个或多个窗口并且它们用相同的窗口过程(WndProc()).不同点就在不同的窗口有不同的hwnd参数.比如我们得到WM_CLOSE消息我们就要销毀那个窗口.我们使用了窗口句柄作为我们得到的第一个参数,其它的窗口都不会受影响,除了那个我们想要操作的之外.
WM_CLOSE是在我们按下关闭按钮或按下Alt+F4组合时产生的.这默认会使窗口销毀,但我喜欢显式处理它,因为这是在程序退出之前做清除检查,或询问用戶是否保存文件等事情的绝佳的位置.
当我们调用DestoryWindow()系统向要销毀的窗口送出WM_DESTORY消息,这里是我们的窗口,并在从系统移除我们的窗口之前删除它剩下的所有的子窗口.因为这是我们的程序中唯一的窗口,我们準备好了并希望程序退出,所以我们调用了PostQuitMessage().这样会向消息循环发出WM_QUIT消息.我们不永远收不到这个消息,因为它使GetMessage()返回FALSE,而且你也可以看到我们的消息循环代码中,这时候我们停止处理消息并返回最终的结果码,我们传递给PostQuitMessage()的WM_QUIT中的wParam部分.这个返回值只有在你的编程为被別的程序调用并且你需要一个确定的返回值时候才有真正有用.
4.C语言宏的用法
#include <stdio.h>
#define PRINT1(a,b) \
{ \
printf("print a\n"); \
printf("print b\n"); \
}
#define PRINT2(a, b) \
do{ \
printf("print a\n"); \
printf("print b\n"); \
}while(0)
#define PRINT(a) \
do{\
printf("%s: %d\n",#a,a);\
printf("%d: %d\n",a,a);\
}while(0)
#define TYPE1(type,name) type name_##type##_type
#define TYPE2(type,name) type name##_##type##_type
#define ERROR_LOG(module) fprintf(stderr,"error: "#module"\n")
main()
{
int a = 20;
int b = 19;
TYPE1(int, c);
ERROR_LOG("add");
name_int_type = a;
TYPE2(int, d);
d_int_type = a;
PRINT(a);
if (a > b)
{
PRINT1(a, b);
}
else
{
PRINT2(a, b);
}
return 0;
}
- learning-windows-32 at first
- first, firstly or at first
- First release at CSDN
- First Sight at Scrum
- hadoop use at first
- WRITTEN AT FIRST
- Deep Learning at NIPS2012
- first learning about http
- My first memo at web.
- My first Blog at CSDN
- first glance at R language
- First Day at this Blog
- The First Day at School
- R learning - looking at data
- First Day of Learning J2EE
- The first day learning JAVA
- loadrunner Fast learning First Day
- ABAP LOOP AT中使用AT FIRST,AT NEW,AT END OF,AT LAST
- Python中的decode方法
- Java判断List中相同值元素的个数
- golang 开发gui,还真有gui的框架,就是做个简单的行
- 虚拟机 centos6.5 扩展硬盘
- Django搭建网站:安装和测试
- learning-windows-32 at first
- 一些VC的快捷键以及调试方法技巧
- Android好用的okhttp网络封装(get,post,上传,下载)
- dubbo优雅关机
- SSM框架下基本的mapper,dao,service,controller等相关文件的整理
- vim中执行shell命令
- Drawable使用
- 面试
- 深入学习SSH框架(Spring MVC +Spring FrameWork +Hibernate +Spring Security)《一:Servlet原理》