关闭

WIN32 API Paint 2007.9.27

473人阅读 评论(0) 收藏 举报

用win32 application做一个很简单的画图程序:

一、调出调色板并选择颜色:

    CHOOSECOLOR cc;    //调色板结构体
    COLORREF cr = 0x00FFFFFF;
    cc.Flags = CC_SOLIDCOLOR;
    cc.lStructSize = sizeof(CHOOSECOLOR);
    cc.hwndOwner = hWnd;
    cc.rgbResult = 0;
    cc.lpCustColors = &cr;
    ChooseColor(&cc);   //出现调色板对话框,并将选择的颜色存入cc.rgbResult中
    hPen = CreatePen(PS_SOLID, 3, cc.rgbResult);//创建一个cc.rgbResult颜色的画笔

二、获得DC方法主要有两个,都要配对使用,一个获得DC,一个删除DC:

1. HDC hDC  = BeginPaint(hWnd, &ps)    //一般只在WM_PAINT中使用。ps是PAINTSTRUCT结构体,其中定义了  一个矩形区域,在这个区域内画图有效。同时函数返回当前实例句柄的DC

    ********   

 EndPaint(hWnd, &ps)  

 

2. HDC hDC = GetDC(HWND)   //这个函数一般是在WM_PAINT以外的消息中使用,取得当前实例句柄的DC并返回。整个实例窗体都是画图有效区域。

 **********

ReleaseDC(HWND, HDC);

 

三、获得当前鼠标位置方法:

1、   

    POINT curp;
    curp.x = LOWORD(lParam);    //  lParam的低字节储存的是鼠标的x坐标
    curp.y = HIWORD(lParam);     //  lParam的高字节储存的是鼠标的y坐标

2、

GetCurrentPositionEx (hdc, &pt) ;    //  将hdc的鼠标当前坐标保存在POINT结构pt中。

 

四、画笔

画笔可以创建多个。在使用时候可以用函数SelectObject(HDC, HPEN)设置当前使用的画笔,此函数返回修改以前的画笔。供用户储存,当使用完新画笔后,再将旧画笔SelectObject进来。

五、单词

LRESULT   CALLBACK   fun();

LRESULT:long

CALLBACK:__stdcall

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3506次
    • 积分:82
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档