#include <strsafe.h>
#include "SysMets.h"
#include <math.h>
#define NUM 1000
#define R 100
#define PI 3.14159
#define TWOPI (2 * 3.14159)
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd) {
static TCHAR szAppName[] = TEXT("Bill");
HWND hwnd;
WNDCLASS wndclass;
MSG msg;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
wndclass.lpfnWndProc = WndProc;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass);
hwnd = CreateWindow(TEXT("Bill"), TEXT("Tip"), WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,
CW_USEDEFAULT, 40, CW_USEDEFAULT, 100,
NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nShowCmd);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
static int cxClient, cyClient;
static TCHAR szBuffer[128];
POINT apt1[5] = { 100, 100, 200, 100, 200, 200, 100, 200, 100, 100 };
POINT apt2[4] = { 300, 100, 400, 100, 400, 200, 300, 200 };
POINT star[5];
POINT ptCenter;
int i;
HBRUSH hBrush;
HGDIOBJ hOldBrush;
switch (message) {
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
//设定五角星的中心点的位置
GetClientRect(hwnd, &rect);
ptCenter.x = (rect.right - rect.left) / 2;
ptCenter.y = (rect.bottom - rect.top) / 2;
//左上点
star[0].x = ptCenter.x - (int)(R * sin(2 * PI / 5));
star[0].y = ptCenter.y - (int)(R * cos(2 * PI / 5));
//右上点
star[1].x = ptCenter.x + (int)(R * sin(2 * PI / 5));;
star[1].y = ptCenter.y - (int)(R * cos(2 * PI / 5));;
//左下点
star[2].x = ptCenter.x - (int)(R * sin(PI / 5));
star[2].y = ptCenter.y + (int)(R * cos(PI / 5));
//顶点
star[3].x = ptCenter.x;
star[3].y = ptCenter.y - R;
//右下点
star[4].x = ptCenter.x + (int)(R*sin(PI / 5));
star[4].y = ptCenter.y + (int)(R*cos(PI / 5));
hBrush = CreateSolidBrush(RGB(255,255,0));
hOldBrush = SelectObject(hdc, hBrush);
Polygon(hdc, star, 5);
/*star[5] = star[0];
MoveToEx(hdc, star[0].x, star[0].y, NULL);
for (int i = 0; i < 6; i++) {
LineTo(hdc, star[i].x, star[i].y);
}
*/
DeleteObject(SelectObject(hdc, hOldBrush));
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
结果图

Result.png
网友评论