vc++面向对象编程的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:16:41
用vc++编写了一个窗口,就用了画笔和画刷,为什么运行后在屏幕上闪一下就不见了 ,闪的时候看到程序是成功了的。
#include<windows.h>
#include<stdlib.h>
#include<string.h>
long WINAPI WndProc(HWND hWnd,UINT iMwssage,UINT wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
while(GetMessage(&Message,0,0,0))//消息循环
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;//定义指向设备上下文的句柄
HBRUSH hBrush;//定义指向画刷的句柄
HPEN hPen;//定义画笔的句柄
PAINTSTRUCT PtStr;//定义指向包含绘图信息的结构体变量
switch(iMessage)//处理消息

这个消息执行完了,就应该返回,否则destroy一起执行了,当然就没有了~

case WM_PAINT://处理绘图消息
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_ANISOTROPIC);//设置映射模式
hPen=(HPEN)GetStockObject(BLACK_PEN);//设置画笔为系统预定义的黑色画笔
hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH);//深灰色画刷
SelectObject(hDC,hBrush);//选择画刷
SelectObject(hDC,hPen);//选择画笔
RoundRect(hDC,50,120,100,200,15,15);//圆角矩形
hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//淡灰色画刷
SelectObject(hDC,hBrush);//选择画刷
Ellipse(hDC,150,50,200,150);//椭圆
hBrush=(HBRUSH)GetStockObject(HOLLOW_BRUSH);//采用系统预定义的虚化刷
SelectObject(hDC,hBrush);//选择画刷
Pie(hDC,250,50,300,100,250,50,300,50);//饼形
EndPaint(hWnd,&PtStr);//结束绘图
return 0;

重绘里面也要写上相应的绘制代码
否则只要一刷新界面就不会显示了