zoukankan      html  css  js  c++  java
  • Windows程序设计学习(3)

    Windows使用2种方法获取设备描述表句柄

    1.处理WM_PAINT消息时, 先调用BeginPaint(HWND, PAINTSTRUCT*),其返回值即是设备描述表句柄HDC(32位无符号整数).在处理完该消息后必须调用EndPaint(HWND, PAINTSTRUCT*).如果不处理该消息需要将消息传递给DefWindowProc(). 默认剪取区域为无效区域

    PS. 自定义擦除背景需要在窗口过程中处理WM_ERASEBKGND消息

    如果要在处理WM_PAINT消息时在更新的矩形外绘图,需要在调用BeginPaint前调用InvalidateRect(hwnd, null, true),这将使整个客户区无效并擦除背景,如果不擦除背景则将第三个参数设为false

    2.在其他消息期间获取设备描述表句柄可以调用  GetDC(Hwnd) 并在结束后调用ReleaseDC(hwnd, hdc)  默认剪取区域为整个客户区域

    类似的函数GetWindowDC()返回写入整个窗口的设备描述表句柄,包含了非客户区(例如,标题栏).而程序就应处理WM_NCPAINT消息(非客户区绘制)

    文本:

    GetTextMetrics(HDC, TEXTMETRIC*)返回设备描述表句柄当前选定的字体信息

    客户区的大小:

    WM_SIZE消息,LPARAM参数的低位字包含客户区的宽度,高位字包含客户区的高度,注册窗口类时指定了CS_VREDRAW,CS_HREDRAW,则在

    WM_SIZE消息后紧跟一个WM_PAINT

    width = LOWORD(lParam)

    hight = HIWORD(lParam)

    滚动条:

    创建窗口时指定WS风格  WS_HSCROLL WS_VSCROLL

    范围:SetScrollRange(hwnd,iBar,iMin,iMax,bRedraw)  //iBar:SB_VERT, SB_HORZ

    位置:SetScrollPos(hwnd,iBar,iPos,bRedraw)

    GetScrollRange,GetScrollPos

    WM_VSCROLL WM_HSCROLL  wParam低位字指出鼠标对滚动条进行的操作(通知码SB_)

    UpdateWindow将导致windows用WM_PAINT消息直接调用窗口过程,而不进入消息队列,在调用完成后,返回到UpdateWindow调用点,继续其后的语句.

    Win32API  SetScrollInfo(hwnd, iBar, &si, bRedraw)  GetScrollInfo(hwnd, iBar, &si) //SCROLLINFO si;

     

  • 相关阅读:
    跟结束进程相关的那些信号
    tcpdump使用示例
    Linux在bash history当中添加timestamp
    CentOS中在/etc/rc.local添加开机自启动项启动失败
    CentOS配置通过DHCP的方式动态获取IP
    CentOS桌面安装
    MySQL二进制安装
    对okhttp参数的一些思考
    依赖倒置原则(DIP)
    Liskov替换原则(LSP)
  • 原文地址:https://www.cnblogs.com/neking/p/2522847.html
Copyright © 2011-2022 走看看