zoukankan      html  css  js  c++  java
  • Windows程序设计笔记(4)

    设备描述表
    1.在WM_PAINT消息时
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hwnd,&ps);
    EndPaint(hwnd,&ps);

    PAINTSTRUCT中包含一个rcPaint的矩形结构,定义为包含窗口客户区的无效范围矩形
    2.非WM_PAINT消息时
    2.1
    hdc=GetDC(hwnd);    //整个绘图区的句柄
    ReleaseDC(hwnd,hdc);
    不使客户区任何可能的无效区域变为有效  (不刷新窗口显示?)
    2.2适用于整个窗口,而非客户区,必须捕获WM_NCPAINT消息
    hdc=GetWindowDC(hwnd);
    ReleaseDC(hwnd,hdc);

    3.获取整个屏幕的设备描述表
    以上2种方式获得的句柄都和某个窗口有关,而想获取整个屏幕的设备描述句柄则应使用
    hdc = CreateDC(pszDriver,pszDevice,pszOutput,pData);
    DeleteDC(hdc);

    4.内存设备描述表
    hdcmem = CreateCompatibleDC(hdc);
    DeleteDC(hdcmem);

    5.元文件设备描述表
    hdcMeta = CreateMetaFile(pszfilename);
    hmf = CloseMetaFile(hdcMeta);

    获取设备描述表信息
    GetDeviceCaps(hdc, index);

    水平/垂直大小(mm) = 25.4 * 水平/垂直分辨率(像素) / 逻辑像素X/Y(每英寸的点数)
    25.4用于将英寸转为mm


    6种GDI对象:
    画笔,刷子,位图,区域,字体,调色板. 这些对象都是通过SelectObject选进设备描述表的.在使用时应遵守以下三条原则:
    1.最后要删除自己创建的所有GDI对象
    2.当GDI对象正在一个有效的设备描述表中时,不要删除它
    3.不要删除现有对象

    背景模式OPAQUE,TRANSPARENT(忽略背景色,且不填充空隙)

    逻辑坐标和设备坐标
    ClientToScreen()  ScreenToClient() 客户区坐标与屏幕坐标的转换
    GetWindowRect获取屏幕坐标下的整个窗口的位置和大小

    Viewport和Windowport
    GetClientRect()获取客户区大小  
    DPToLP() 设备点转逻辑点
    LPToDP() 逻辑点转设备点

    注:在改变viewport或者windowport后并不能立即刷新显示输出,而必须在改变原点之后刷新输出



  • 相关阅读:
    HDU 2066 一个人的旅行 最短路问题
    HDU 2112 HDU Today 最短路
    HDU 2521 反素数 模拟题
    mac 安装 office
    selenium用法 (python)
    selenium遇到不可编辑input和隐藏input如何赋值
    mac 下bash命令
    ssh 自动登录
    linux常用命令
    json字符串调整
  • 原文地址:https://www.cnblogs.com/neking/p/2534698.html
Copyright © 2011-2022 走看看