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;

     

  • 相关阅读:
    codeforces 814B An express train to reveries
    codeforces 814A An abandoned sentiment from past
    codeforces 785D D. Anton and School
    codeforces 785C Anton and Fairy Tale
    codeforces 791C Bear and Different Names
    AOP详解
    Spring集成JUnit测试
    Spring整合web开发
    IOC装配Bean(注解方式)
    IOC装配Bean(XML方式)
  • 原文地址:https://www.cnblogs.com/neking/p/2522847.html
Copyright © 2011-2022 走看看