windows 随机矩形绘制

代码如下

#include<windows.h>
void DrawRect (HWND hwnd);
int cxClient, cyClient;

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	static TCHAR szAppName[] = TEXT("wndclass by lxy");
	HWND		hwnd;
	MSG			msg;
	WNDCLASS	wndclass;
	//窗口类初始化
	wndclass.style			= CS_VREDRAW | CS_HREDRAW;
	wndclass.lpfnWndProc	= WndProc;
	wndclass.cbClsExtra		= 0;
	wndclass.cbWndExtra		= 0;
	wndclass.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);
	wndclass.hCursor		= LoadCursor(NULL,IDC_ARROW);
	wndclass.hIcon			= LoadIcon(NULL,IDI_APPLICATION);
	wndclass.hInstance		= hInstance;
	wndclass.lpszClassName	= szAppName;
	wndclass.lpszMenuName	= NULL;
	//注册窗口类
	if (!RegisterClass(&wndclass))
	{
		MessageBox(NULL,TEXT("分配窗口类失败!"),szAppName,MB_ICONERROR);
		return 0;
	}
	//创建窗口
	hwnd = CreateWindow(szAppName,
						TEXT("信息显示"),
						WS_OVERLAPPEDWINDOW,
						CW_USEDEFAULT, CW_USEDEFAULT,
						CW_USEDEFAULT, CW_USEDEFAULT,
						NULL, NULL, hInstance, NULL);

	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);		

	while (TRUE)
	{
		if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
		{
			if ( msg.message == WM_QUIT)
				break;
			TranslateMessage (&msg);
			DispatchMessage (&msg);
		}
		else
		{
			DrawRect(hwnd);

		}
	}

	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_SIZE:
		cxClient = LOWORD(lParam);
		cyClient = HIWORD(lParam);
		return 0;

	case WM_DESTROY:
		PostQuitMessage(message);
		return 0;

	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}

void DrawRect (HWND hwnd)
{
	RECT rect;
	HDC hdc;
	HBRUSH hBrush;
	char szBuffer[20];
	static long num = 0;
	int t;
	if (cxClient == 0 || cyClient == 0)
		return;
	t = rand()%cyClient;
	SetRect (&rect , 100, t, cxClient, t+100);
	//Sleep(10);

	hdc = GetDC (hwnd);
	hBrush = CreateSolidBrush (RGB(rand()%256, rand()%256, rand()%256));
	FillRect (hdc, &rect, hBrush);
	num++;
	TextOut (hdc, 0, 0, szBuffer, wsprintf (szBuffer, "已绘矩形"));
	TextOut (hdc, 0, 20, szBuffer, wsprintf (szBuffer, "%ld", num));
	ReleaseDC (hwnd, hdc);
	DeleteObject (hBrush);
}
时间: 2024-11-15 01:37:24

windows 随机矩形绘制的相关文章

MFC 随机矩形

问题描述: 简单地使用随即的尺寸和颜色不停的绘制一系列的图像. 一种古老的方式: 设置一个向窗口函数发送WM_TIMER消息的windows计时器. 对每个WM_TIMER消息,调用GetDC函数获取设备环境,然后绘制一个随机矩形,接着调用ReleaseDC函数释放设备环境. 方法弊端: 程序不能很快的绘制随机矩形,必须等待每个WM_TIMER消息,会依赖于系统时钟的精度 新函数: PeekMessage(&msg,NULL,0,0,PM_REMOVE);这个函数允许一个程序检查程序队列中的下一

opengl学习记录1——矩形绘制

1 #include <windows.h> 2 #include <gl/GL.h> 3 #include <gl/GLU.h> 4 #include <glut.h> 5 6 #pragma comment( lib, "glut.lib" ) 7 8 void display() 9 { 10 glClear( GL_COLOR_BUFFER_BIT ); 11 12 glColor3f( 1.0, 1.0, 1.0 ); 13 g

JS_生成随机矩形位置/矩形大小_面向对象_原型+构造函数模式

使用面向对象的方法进行矩形的随机生成.使用了原型和构造函数模式 随机生成矩形.矩形的位置是随机的,矩形的长宽(100-200)也是随机的. 贴上代码: html 1 <div class="content" id="content"> 2 <div class="controls"> 3 <label for="rec_num">请输入您要自动生成的矩形数量:</label> 4

Windows编程——万花筒绘制

#include<windows.h> #include<stdlib.h> #include<string.h> #include<math.h> #define Pi 3.1415926 long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam); BOOL InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(H

Windows控制台下绘制简单图形

示例代码将在注册表位置:HKEY_CURRENT_USER\Software\  读写键值 bool LicenseManage::OpenRegKey(HKEY& hRetKey) { if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,"Software", &hRetKey)) { return true; } return false; } bool LicenseManage::CreateRegKey(stri

html5 canvas绘制矩形和圆形

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body onload="draw(),drawarc()"> <!--绘制的步骤:获取canvas元素->取得上下文->填充与绘制边框->设定绘图样式--> <!--绘制其他复杂图

HTML5 在canvas中绘制矩形

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统,x坐标向右递增,y坐标向下递增. 使用绘图环境的矩形绘制函数来绘制矩形. fillRect(x,y,width,height) : 绘制一个实心的矩形. strokeRect(x,y,width,height) : 绘制一个空心的矩形. clearRect(x,y,width,height) : 清

IOS开发 图形绘制,绘制线条,矩形,和垂直和居中绘制文字

概述 吐槽下IOS下 的图形绘图,代码冗长,不得不自己重新封装方法.整理形成本文. 绘制线 // 绘制直线 + (void)toDrawLineFromX:(CGFloat)x1 Y:(CGFloat)y1 toX:(CGFloat)x2 toY:(CGFloat)y2 context:(CGContextRef)con{ CGContextMoveToPoint(con, x1, y1); CGContextAddLineToPoint(con, x2, y2); CGContextSetLi

HTML5 在canvas绘制一个矩形

笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统,x坐标向右递增.y坐标向下递增. 使用画图环境的矩形绘制函数来绘制矩形. fillRect(x,y,width,height) : 绘制一个实心的矩形. strokeRect(x,y,width,height) : 绘制一个空心的矩形. clearRect(x,y,width,height) :