zoukankan      html  css  js  c++  java
  • windows窗口过程函数名词解析

    windows窗口过程函数名词解析

    LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
    
    1. LRRESULT
    lresult:
    MSDN: 
      32-bit value returned from a windows procedure or callback function
    在winbnt.h中定义为 long long
    在windef.h中定义为 long result
    LRESULT中L表示它是一个长整型,RESULT表示返回的某个结果
    
    2. CALLBACK
    callback:
       存在定义如下
        #define CALLBACK _stdcall
        #define WINAPI _stdcall
        1. CALLBACK与WINAPI完全等价
        2. _stdcall是一种调用约定,它让编译器知道了应当以windows兼容的方式来产生机器指令。如果去掉虽然可以通过编译,但会产生一条警告。
    
    3. WndProc
    wndproc:
       窗口过程函数,主要用于处理发送给窗口的消息
    
    4. HWND
    H表示handle,指句柄
    WND表示指向对象window,指窗口对象
    因此hwnd指窗口句柄,如果将窗口比作人,那么窗口句柄就是其身份证
    
    5. UINT
    表示待处理消息的ID,即消息的类型
    
    6. WPARAM,LPARAM
    消息的附加信息
    消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)构成。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单选中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。
    

    因为一个程序可以有多个窗口,窗口的第一个参数就用来指定接收消息的那个特定窗口,即窗口句柄。
    同时我们用switch (unit)判断消息类型并进行不同的处理

    LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
    {
    	switch(message)
    	{
    	case WM_PAINT:
    		ValidateRect((hwnd,NULL);  //更新客户区显示
    		break;
    	case WM_KEYDOWN:
    		if(wParam==VK_ESCAPE) DestroyWindow(hwnd);  //按照命令销毁窗口
    		break;
    	case WM_DESTROY:
    		PostQuitMessage(0);   //提示操作系统有一个线程请求终止
    		break;
    	default:
    		return DefWindowProc(hwnd,message,wParam,lParam);  //返回默认处理函数处理结果
    	}
    	return 0;
    }
    
  • 相关阅读:
    1+x LNMP + WordPress
    1+X Samba
    1+X NFS
    1+x FTP
    1+x LVM
    笔记(全)
    前端性能优化整理总结
    Event Loop我知道,宏任务微任务是什么鬼?
    深入探讨深拷贝浅拷贝两兄弟
    react后台管理系统路由方案及react-router原理解析
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/6944660.html
Copyright © 2011-2022 走看看