VC常用句柄及类型说明

句柄类型说明

HWND 窗口句柄

  • HINSTANCE 当前实列句柄
  • HCURSOR 光标句柄
  • HFONT 字体句柄
  • HPEN 画笔句柄
  • HBRUSH 画刷句柄
  • HDC 设备环境句柄
  • HBITMAP 位图句柄
  • HICON 图标句柄
  • HMENU 菜单句柄
  • HFILE 文件句柄

系统定义消息宏前缀:

  • BM_ 按钮控制消息
  • CB_ 组合框
  • DM_ 压式按钮
  • EM_ 编辑框
  • LB_ 列表框
  • SBM_ 滚动条
  • WM_ 窗口

不同消息类型取直范围:

  • 系统定义1 0x0000–0x03FF
  • 用户定义内部消息 0x0400–0x07FF
  • 系统定义2 0x0800–0xBFFF
  • 用户定义外部消息 0xC000–0xFFFF

常用的部分 Windows 数据类型:

  • WORD 16位无符号整数
  • LONG 32位有符号整数
  • DWORD 32位无符号整数
  • HANDLE句柄
  • UINT 32位无符号整数
  • BOOL 布尔
  • LPTSTR 指向字符串的32位指针
  • LPCTSTR 指向字符串常量的32位指针

数据结构:

     typedef   struct   tagMSG  
      {  
    HWND hwnd;检索窗口句柄  
      UNIT message;消息直  
      WPARAM wParam;参数  
      LPARAM lParam;参数  
      DWORD time;消息送至队列的时间  
      POINT pt;消息发送时光标位置  
    } 
  typedef   struct   tagPOINT  
  {  
    LONG   x,y;  
  }   POINT;  
 typedef   struct   tagWNDCLASS  
  {  
    UINT       style;  
  WINDPROC lpfnWndProc;  
  Int cbClsExtra;  
  Int cbWndExtra;  
  HINSTANCE hInstance;  
  HICON hIcon;  
  HCURSOR hCursor  
  HBRUSH hbrBackground;  
  LPCTSTR lpszMenuName;  
  LPCTSTR lpszClassName;  

 }WNDCLASS;  
 typedef   struct   tagRECT  
  {  
  LONG left;  
  LONG top;  
  LONG right;  
  LONG bottom;  
  }RECT;  

位图应用:

  • HDC hdc;设备环境句柄
  • HDC hdcmem;内存设备环境句柄
  • HBITMAP hBm;位图句柄
  • BITMAP bm; BITMAP 结构

    hdc=GetDC(hwnd);
    hdcmem=CreateCompatibleDC(hdc);先获得内存设备环境
    hBm=LoadBitmap 加载位图
    (
    hInstanc, 当前应用程序实列句柄
    lpszName 位图名称
    );

    hBm=CreateCompatibleBitmap(hdc,nWidth,nHeight,) 或者是创建位图
    SelectObject(hcdmem,hBm);送入内存

    在输出位图之前获得位图尺寸
    int GetObject
    (
    HANDLE hObject,对象句柄
    int nCount,考贝到缓冲区的字节数
    LPVOID lpObject 接收信息的缓冲地址
    )

    int GetObject
    (
    hBm,
    sizeof(BITMAP),
    (LPVIOD)&bm
    )

    写入信息到位图结构中

  typedef   struct   tagBITMAP  
  {  
      LONG       bmType;      位图类型  
      LONG           bmWidth;                位图宽度  
      LONG           bmHeight;              位图高度  
      LONG           bmWidthBytes;      每一光栅行的字节数  
      WORD           bmPlanes;              位图中位面的数目    
      WORD           bmBitsPixel;        位图中每个象素的位数  
      LPVIOD       bmBits;                  位图位直的地址  
    };BITMAP  

输出位图

  BOOL   BitBlt  
  (  
      HDC   hdcDest,目的设备环境句柄  
      int   Xdext,int   Ydest  目的设备显示位图的基本点  
      int   Width,   int   nHeitght,目的设备显示区域的高和宽  
      HDc   hdcscr  元设备句柄  
      int   xScr,int   yscr,元设备位图的左上角点  
      DWORD   dwrop  位图的显示方式  
  )  

位图的显示方式 dwrop

  • BLACKNESS 输出全黑色
  • DSTINVERT 目标执行取反操作
  • MERGECOPY 将原图与模板执行与
  • MERGEPAINT …………….或
  • NOTSRCCOPY 在拷贝之前将原图执行取反
  • NOTSTCERASE 原和目的执行或,再执行取反
  • PATCOPY 将模版拷贝到目标位置
  • PAINTVERT 将模板和目标位图执行异或
  • SRCCOPY 将原拷贝到目标位图
  • SRCAND 将原和目标执行与
  • SRCPAINT …………..或
  • SRCERASE 目标先取反再和原执行与
  • SRCINVERT 将原和目标执行异或
  • WHITENESS 输出全白

窗口:

  • BOOL EnableWindow(HWND hwnd,Bool bEnable);
  • BOOL MoveWindow(HWND hwnd,int x,int y,int nWidth,int nHeight,BOOL bReprint)
  • bool SetWinodwText(HWND hwnd, LPCTSTR lpszString);
  • int GetWindowText(HWND hwnd, LPSTR lpszString, int nMax)

设备环境:

  HDC   hdc=GetDC(hwnd);  
  void   ReleaseDC(hdc);  
 PAINTSTRUCT   ps;  
  HDC   hdc=BeginPaint(hwnd,&ps)  
 typedef   struct   tagPAINTSTRUCT  
  {  
    HDC   hdc;  
    BOOL   fErase;擦除无效矩形背景  
    RECT   rcPaint无效矩形标识  
    BOOL   fRestore;系统保留  
    BOOL   fIncUpdate;系统保留  
    BYTE   rgbReserved[16]系统保留  
    }PAINTSTRUCT:    
  void   EndPaint(HWND   hwnd,   PAINTSTRUCT   &ps);  

映象模式:

  • MM_TEXT 一个象素 Y向下 X向右
  • MM_HIENGLISH 0.001英寸 Y向上 X向右
  • MM_HIMETRIC 0.01毫米 Y向上 X向右
  • MM_ISOTROPIC系统确定可选 X:Y=1:1
  • MM_LOENGLISH 0.01英寸 Y向上 X向右
  • MM_LOMETRIC 0.1毫米 Y向上 X向右
  • MM_ANISOTROPIC系统确定可选
  • MM_TWIPS 1/1440英寸 Y向上 X向右
  int   nMapMode=GetMapMode(hdc);  
  SetMapMode(hdc,nMapMode);  

你可能感兴趣的:(VC常用句柄及类型说明)