随机矩形

来源:互联网 发布:淘宝的steam游戏 编辑:程序博客网 时间:2024/05/21 14:42
#include<windows.h>#define WM_MYHOTKEY WM_USER+100void draw(HWND hwnd);static int cxClient, cyClient;LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam){HDC dc;RECT rec;PAINTSTRUCT ps;if (wparam == WM_MYHOTKEY) {MessageBox(NULL, "", "", MB_OK);return 0;}switch (umsg){case WM_KEYDOWN://if (::GetKeyState(VK_CONTROL) && ::GetKeyState(VK_MENU))case WM_KEYUP:case WM_CHAR:case WM_SYSKEYDOWN:if (wparam == VK_MENU)keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);case WM_SYSKEYUP:case WM_SYSCHAR:return 0;case WM_PAINT:BeginPaint(hwnd, &ps);GetClientRect(hwnd, &rec);dc = GetDC(hwnd);//TextOut(dc, rec.right/2, rec.bottom/2, "hanhanhan", 9);//DrawText(dc, "韩良伟", 6, &rec, DT_VCENTER | DT_CENTER | DT_SINGLELINE);EndPaint(hwnd, &ps);break;case WM_SIZE:cxClient = LOWORD(lparam);cyClient = HIWORD(lparam);break;case WM_CLOSE:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, umsg, wparam, lparam);//默认的窗口处理函数}return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevinstace, PSTR szCmdLine, int iCmdShow){TCHAR szName[] = "My Windows";//用于保存窗口类名HWND hWnd;MSG msg;WNDCLASS wnd;wnd.style = CS_VREDRAW | CS_HREDRAW;wnd.lpfnWndProc = WndProc;//回调函数wnd.cbClsExtra = 0;wnd.cbWndExtra = 0;wnd.hInstance = hInstance;//应用程序实例句柄wnd.hCursor = LoadCursor(NULL, IDC_ARROW);wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION);wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wnd.lpszMenuName = NULL;wnd.lpszClassName = szName;//指定窗口类名if (!RegisterClass(&wnd)){MessageBox(NULL, TEXT("注册窗口失败!"), TEXT("警告"), MB_ICONWARNING);return 0;}hWnd = CreateWindow(szName, TEXT("class"), NULL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd);RegisterHotKey(hWnd, WM_MYHOTKEY, MOD_CONTROL|MOD_ALT ,'s');while (1)//获取到WM_QUIT返回值为0,其他为非0值{if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){if (msg.message == WM_QUIT)break;TranslateMessage(&msg);//将虚拟键消息转换为字符消息DispatchMessage(&msg);//将消息传送到窗口函数}elsedraw(hWnd);}return 0;}void draw(HWND hwnd){int cx, cy;cx = GetSystemMetrics(SM_CXSCREEN);cy = GetSystemMetrics(SM_CYSCREEN);MoveWindow(hwnd,0,0,cx,cy,FALSE);LONG Style = ::GetWindowLong(hwnd, GWL_STYLE);::SetWindowLong(hwnd, GWL_STYLE, Style&~WS_CAPTION);::SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED);//Rectangle,RoudRect,Ellipse,Chord,Pie等函数会实用设备环境的当前画刷来填充//Sleep(50);HBRUSH hBrush;HDC hDc;RECT rect;hDc = GetDC(hwnd);SetRect(&rect, rand() % cxClient, rand() % cyClient, rand() % cxClient, rand() % cyClient);//设置一个矩形区域hBrush = CreateSolidBrush(RGB(rand() % 255, rand() % 255, rand() % 255));//创建一个随机颜色的画刷//hBrush = CreateHatchBrush(HS_CROSS, RGB(rand() % 255, rand() % 255, rand() % 255));//创建一个带阴影的画刷//hBrush = (HBRUSH)GetStockObject(GRAY_BRUSH);//选用系统定义好的画刷FillRect(hDc, &rect, hBrush);//用此画刷填充矩形区域SelectObject(hDc, hBrush);//讲画刷选入当前设备环境//SelectObject(hDc, GetStockObject(NULL_PEN));//如果要使得矩形没有边框,则要将不带颜色的画笔选入当前设备环境//RoundRect(hDc, rand() % cxClient, rand() % cyClient, rand() % cxClient, rand() % cyClient, rand() % cxClient, rand() % cyClient);//绘制矩形//Chord(hDc, 0, 0, cxClient, cyClient, cxClient / 2, 0, 0, cyClient / 2); //椭圆弧线,四个坐标分别代表椭圆的左上角和右下角,绘制的开始坐标以及结束坐标ReleaseDC(hwnd, hDc);DeleteObject(hBrush);}

0 0