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;

     

  • 相关阅读:
    烂泥:学习ubuntu之快速搭建LNMP环境
    烂泥:学习ubuntu远程桌面(二):远程桌面会话管理
    烂泥:学习ubuntu远程桌面(一):配置远程桌面
    烂泥:学习ssh之ssh密钥随身携带
    烂泥:学习ssh之ssh无密码登陆
    JS 获取浏览器窗口大小
    connect() failed (111: Connection refused) while connecting to upstream的解决
    css加载没效果,查看网络显示类型为 text/plain 的解决方法
    empty和isset的区别
    SQLite3命令操作大全
  • 原文地址:https://www.cnblogs.com/neking/p/2522847.html
Copyright © 2011-2022 走看看