BeginPaint

王朝百科·作者佚名  2010-02-16
窄屏简体版  字體:   |    |    |  超大  

BeginPaint函数准备指定的窗口来重绘并将绘画相关的信息放到一个PAINTSTRUCT结构中。

HDC BeginPaint(

HWND hwnd, // 窗口的HANDLE

LPPAINTSTRUCT lpPaint // 绘画信息

);

参数:

hWnd:[输入]被重绘的窗口HANDLE

lpPaint:[输出]指向一个用来接收绘画信息的PAINTSTRUCT结构

返回值:

如果函数成功,返回值是指定窗口的显示设备内容HANDLE

如果函数失败,返回值是NULL,指示没有得到显示设备内容

Windows NT/2000/XP: 使用GetLastError得到更多的错误信息。

备注:

BeginPaint函数自动设置显示设备内容的剪切区域而排除任何更新区域外的区域更新区域通过InalidateRect或InalidateRgn函数和系统的改变大小、移动、创建、滚动或其他的影响客户区操作来设置的。如果更新区域被标记为可擦除的,BeginPaint发送一个WM_ERASEBKGND消息给窗口。

一个应用程序除了响应WM_PAINT消息外,不应该调用BeginPaint。每次调用BeginPaint都应该有相应的EndPaint函数。

如果被绘画的客户区中有一个^符号,BeginPaint自动隐藏该符号,而保证它不被擦除。

如果窗口类有一个背景刷,BeginPaint使用这个刷子来擦除更新区域的背景。

例子代码:

你使用BeginPaint和EndPaint函数来准备和完成客户区的绘画。BeginPaint返回一个用来绘画的客户区的显示设备内容的HANDLE,EndPaint终止绘画请求,并释放设备内容。

下面的例子中,窗口程序写HELLO WINDOWS消息到窗口的客户区。为了使字符串在窗口第一次创建的时候可见,WinMain函数在创建和显示窗口之后立即调用UpdateWindow,这导致一个WM_PAINT消息被立即发送到窗口程序中。

LRESULT APIENTRY WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

PAINTSTRUCT ps;

HDC hdc;

switch (message)

{

case WM_PAINT:

hdc = BeginPaint(hwnd, &ps);

TextOut(hdc, 0, 0, "Hello, Windows!", 15);

EndPaint(hwnd, &ps);

return 0L;

// Process other messages.

}

}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

HWND hwnd;

hwnd = CreateWindowEx(

// parameters

);

ShowWindow(hwnd, SW_SHOW);

UpdateWindow(hwnd);

return msg.wParam;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航