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后并不能立即刷新显示输出,而必须在改变原点之后刷新输出



  • 相关阅读:
    silverlight 调用默认打印机
    拿来主意
    关于js智能提示的封装(修订版)
    silverlight 获取文本框焦点
    silverlight Timer
    winform 中写app.config文件时 调试情况下没有改变的原因
    关于asp:GridView和dx:ASPxGridView固定表头的jquery代码封装
    Microsoft Visual Studio 2010的前世今生
    游戏开发之我见
    JS中数组去重
  • 原文地址:https://www.cnblogs.com/neking/p/2534698.html
Copyright © 2011-2022 走看看