菜鸟问题,求大神解决~~~~~~

yao_smile 2011-10-19 05:38:24
编了一个创建窗口的程序,编译能通过,但是在运行时窗口一闪而过!!!自己想了一个很笨得方法,用sleep函数,能延迟一会,但是还是达不到自己想要的效果!
代码是:#include<windows.h>

#include<stdlib.h>

#include<string.h>

#include<math.h>

#define PI 3.1415926535898

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

POINT pt[5][3];

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG Message;

HWND hWnd;

WNDCLASS WndClass;

WndClass.cbClsExtra = 0;

WndClass.cbWndExtra = 0;

WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);

WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);

WndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));

WndClass.hInstance = hInstance;

WndClass.lpfnWndProc = WndProc;

WndClass.lpszClassName = "Pentagon";

WndClass.lpszMenuName = NULL;

WndClass.style = 0;

if(!RegisterClass(&WndClass))
{
MessageBeep(0);

return FALSE;
}

hWnd = CreateWindow("Pentagon",
"五边形",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);

pt[0][0].x = 400; //第一块区域相关的坐标
pt[0][0].y = 200 - (long)50 / (cos(PI / 5));
pt[0][1].x = 400 - (long)((50 / cos(PI / 5)) * cos(PI / 10));
pt[0][1].y = 200 - (long)(50 / cos(PI / 5) * sin(PI / 10));
pt[0][2].x = 400;
pt[0][2].y = 200;

pt[1][0].x = 400 - (long)((50 / cos(PI / 5)) * cos(PI / 10)); //第二块区域相关的坐标
pt[1][0].y = 200 - (long)(50 / cos(PI / 5) * sin(PI / 10));
pt[1][1].x = 400 - (long)(50 * tan(PI / 5));
pt[1][1].y = 250;
pt[1][2].x = 400;
pt[1][2].y = 200;

pt[2][0].x = 400 - (long)(50 * tan(PI / 5)); //第三块区域相关的坐标
pt[2][0].y = 250;
pt[2][1].x = 400 + (long)(50 * tan(PI / 5));
pt[2][1].y = 250;
pt[2][2].x = 400;
pt[2][2].y = 200;

pt[3][0].x = 400 + (long)(50 * tan(PI / 5)); //第四块区域相关的坐标
pt[3][0].y = 250;
pt[3][1].x = 400 + (long)((50 / cos(PI / 5)) * cos(PI / 10));
pt[3][1].y = 200 - (long)(50 / cos(PI / 5) * sin(PI / 10));
pt[3][2].x = 400;
pt[3][2].y = 200;

pt[4][0].x = 400 + (long)((50 / cos(PI / 5)) * cos(PI / 10)); //第五块区域相关的坐标
pt[4][0].y = 200 - (long)(50 / cos(PI / 5) * sin(PI / 10));
pt[4][1].x = 400;
pt[4][1].y = 200 - (long)50 / (cos(PI / 5));
pt[4][2].x = 400;
pt[4][2].y = 200;


ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

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)
{
case WM_PAINT:

hDC = BeginPaint(hWnd, &PtStr);

hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); //绘制红色的边

hBrush = CreateSolidBrush(RGB(0, 255, 0)); //使用绿色画刷填充

SelectObject(hDC, hPen);

SelectObject(hDC, hBrush);

Polyline(hDC, pt[0], 3);

Polygon(hDC, pt[0], 3);

DeleteObject(hPen); //绘制红色的边结束,释放画笔

hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0)); //绘制绿色的边

hBrush = CreateSolidBrush(RGB(255, 255, 0)); //使用黄色画刷填充

SelectObject(hDC, hPen);

SelectObject(hDC, hBrush);

Polyline(hDC, pt[1], 3);

Polygon(hDC, pt[1], 3);

DeleteObject(hPen); //绘制绿色的边结束,释放画笔

hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); //绘制蓝色的边

hBrush = CreateSolidBrush(RGB(255, 0, 0)); //使用红色画刷填充

SelectObject(hDC, hPen);

SelectObject(hDC, hBrush);

Polyline(hDC, pt[2], 3);

Polygon(hDC, pt[2], 3);

DeleteObject(hPen); //绘制蓝色的边结束,释放画笔

hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 255)); //绘制紫色的边

hBrush = CreateSolidBrush(RGB(0, 0, 255)); //使用蓝色画刷填充

SelectObject(hDC, hPen);

SelectObject(hDC, hBrush);

Polyline(hDC, pt[3], 3);

Polygon(hDC, pt[3], 3);

DeleteObject(hPen); //绘制紫色的边结束,释放画笔

hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 255)); //绘制青色的边

hBrush = CreateSolidBrush(RGB(255, 0, 255)); //使用紫色画刷填充

SelectObject(hDC, hPen);

SelectObject(hDC, hBrush);

Polyline(hDC, pt[4], 3);

Polygon(hDC, pt[4], 3);

DeleteObject(hPen); //绘制青色的边结束,释放画笔

EndPaint(hWnd, &PtStr);

Sleep(10000);

case WM_DESTROY:

PostQuitMessage(0);

return 0;

default:

return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
}


期待大神们给力的解答~~~
...全文
61 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘然而过 2011-10-19
  • 打赏
  • 举报
回复
ctrl+F5运行。 3#正解
枫桦沐阳 2011-10-19
  • 打赏
  • 举报
回复
Sleep(10000);
break; ---->漏了case WM_DESTROY:
PostQuitMessage(0)
return 0;

。。。。。
yao_smile 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yuucyf 的回复:]
Sleep(10000);
case WM_DESTROY:
PostQuitMessage(0)
return 0;
[/Quote]

没看懂你的?
yao_smile 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 piaoxue831101 的回复:]
#include "stdlib.h"
system("pause");
[/Quote]

这个貌似不行啊
yao_smile 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ynb119 的回复:]
这个。。。。。用不着大神。
switch(iMessage)的case语句最后漏了break
[/Quote]

因为是初学者,所以大家多多指教
飘雪831101 2011-10-19
  • 打赏
  • 举报
回复
#include "stdlib.h"
system("pause");
yuucyf 2011-10-19
  • 打赏
  • 举报
回复
Sleep(10000);
case WM_DESTROY:
PostQuitMessage(0)
return 0;

飘雪831101 2011-10-19
  • 打赏
  • 举报
回复
ctrl+F5运行。
stevin_liang 2011-10-19
  • 打赏
  • 举报
回复
貌似每个case语句和default语句后都少个break
枫桦沐阳 2011-10-19
  • 打赏
  • 举报
回复
这个。。。。。用不着大神。
switch(iMessage)的case语句最后漏了break

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧