SDI程序总是没运行出任何结果!请大家务必帮个忙
//各位朋友:
//真的好郁闷:我写第一个SDI程序总是没任何结果!请大家务必帮个忙!
//以下是原程序:
//这是一个画五变形的SDI程序:
#include <windows.h>
#include <tchar.h>
#include <string>
#include <cmath>
using namespace std;
const double Pi=3.1415926;
long WINAPI WndProc(HWND hWnd,UINT uMsg,WPARAM wParam, LPARAM lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
if(!InitWindowsClass(hInstance)) return FALSE;
if(!InitWindows(hInstance,nCmdShow)) return FALSE;
MSG Msg;
while(GetMessage(&Msg,NULL,0,0))//必须为空,代表主线程
{
TranslateMessage(&Msg); DispatchMessage(&Msg);
}
return Msg.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT uMsg,WPARAM wParam, LPARAM lParam)
{
HDC hDc; HBRUSH hBrush; HPEN hPen; PAINTSTRUCT pt_Struct;
double _radious=100.0, radious; POINT pt[5],_pt[5],Tri[3];
radious=_radious*sin(0.1*Pi)/sin(126.0/180*Pi);
for(int i=0;i<5;++i)
{
pt[i].y=pt[i].x=(long)(_radious*cos(i*72.0/180*Pi));
_pt[i].y=_pt[i].x=(long)(_radious*cos(i*72.0/180*Pi+36.0/180*Pi));
}
switch(uMsg)
{
case WM_PAINT:
hDc=BeginPaint(hWnd,&pt_Struct);
SetMapMode(hDc,MM_ANISOTROPIC); //设置映射模式!
SetWindowOrgEx(hDc,-100,-100,NULL); //设置坐标原点!
hPen=CreatePen(PS_SOLID,1,RGB(0,255,0));
SelectObject(hDc,hPen);
Polygon(hDc,pt,5);
for(int i=0;i<5;++i)
{
Tri[0]=pt[i%5]; Tri[1]=_pt[i%5]; Tri[2]=pt[(i+1)%5];
hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));
SelectObject(hDc,hBrush);
Polygon(hDc,Tri,3);
Tri[2]=_pt[(1+4)%5];
hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));
SelectObject(hDc,hBrush);
Polygon(hDc,Tri,3);
}
hBrush=CreateSolidBrush(RGB(255,255,255));
SelectObject(hDc,hBrush);
Polygon(hDc,_pt,5);
MoveToEx(hDc,pt[0].x,pt[0].y,NULL);
for(int i=0;i<5;++i)
{
hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
SelectObject(hDc,hPen);
LineTo(hDc,pt[(i+2)%5].x,pt[(i+2)%5].y);
}
hPen=(HPEN)(GetStockObject(PS_SOLID));
DeleteObject(hPen);DeleteObject(hBrush);
EndPaint(hWnd,&pt_Struct);
return 0;
case WM_DESTROY: PostQuitMessage(WM_QUIT); return 0;
default: return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow( _T("Polygon"), _T("五边形"),
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd) return FALSE;
//hWndMain=hWnd;//????
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS wc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName= _T("Polygen");
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW|CS_VREDRAW;
return RegisterClassW(&wc);
}
运行后无任何错误!
但是我按下Ctrl+F5后,过了3个小时无任何结果!然后我试了好多办法都不行,希望大家帮忙!
运行环境VS2005->工程->Win32->Windows应用程序!