学习windows编程 day4 之 绘制随机矩形和peekMessage
- #include <windows.h>
- #include <strsafe.h>
- LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
- void DrawRectangle(HWND hwnd);
- int cxClient, cyClient;
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
- {
- //声明全局数据:类名
- static TCHAR szClassName[] = TEXT("MyWindows");
- HWND hwnd;
- MSG msg;
- //注册窗口类
- WNDCLASS wndclass;
- wndclass.hInstance = hInstance;
- wndclass.lpszClassName = szClassName;
- wndclass.cbClsExtra = ;
- wndclass.cbWndExtra = ;
- wndclass.lpfnWndProc = WndProc;
- wndclass.lpszMenuName = NULL;
- wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
- wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
- wndclass.style = CS_HREDRAW;
- if (!RegisterClass(&wndclass))
- {
- MessageBox(NULL, TEXT("this program must run in Windows NT!"), szClassName, MB_ICONERROR);
- return ;
- }
- hwnd = CreateWindow(
- szClassName,
- TEXT("MyFirstPractice"),
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- NULL,
- NULL,
- hInstance,
- NULL
- );
- ShowWindow(hwnd, nShowCmd);
- UpdateWindow(hwnd);
- // while (GetMessage(&msg, NULL, 0, 0)) 阻塞函数 这个NULL是指接收当前窗口,包括非客户区的信息,如果设为hwnd则(指的是当前客户区)处理非客户区时,不会响应去退出程序,所以会在后台存在 ???
- // {
- // TranslateMessage(&msg);
- // DispatchMessage(&msg);
- // }
- // #define PM_NOREMOVE 0x0000
- // #define PM_REMOVE 0x0001
- // #define PM_NOYIELD 0x0002
- // #if(WINVER >= 0x0500)
- // #define PM_QS_INPUT (QS_INPUT << 16)
- // #define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
- // #define PM_QS_PAINT (QS_PAINT << 16)
- // #define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16)
- while (TRUE)
- {
- if (PeekMessage(&msg,NULL,,,PM_REMOVE))//PM_REMOVE接收后删除 PM_NOREMOVE获取后不删除(偷窥)
- {
- if (msg.message==WM_QUIT)
- {
- break;
- }
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- else
- {
- //rand() //0~MAX_RAND 0-32767
- //绘制矩形,用到消息处理中的数据(全局)
- DrawRectangle(hwnd);
- }
- }
- return msg.wParam;
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- HDC hdc;
- PAINTSTRUCT ps;
- RECT rect;
- // static int cxClient, cyClient; //static是指数据在这个函数中为全局,不是在程序中
- switch (message)
- {
- case WM_SIZE:
- cxClient = LOWORD(lParam);
- cyClient = HIWORD(lParam);
- break;
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- GetClientRect(hwnd, &rect);
- EndPaint(hwnd, &ps);
- break;
- case WM_DESTROY:
- PostQuitMessage();
- return ;
- }
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
- void DrawRectangle(HWND hwnd)
- {
- // TCHAR szBuffer[100];
- // StringCchPrintf(szBuffer, 100, L"%d %d", cxClient, cyClient);
- // MessageBox(NULL, szBuffer, L"Info", NULL);
- HBRUSH hBrush;
- HDC hdc;
- RECT rect;
- if (cxClient == || cyClient == )
- return;
- hdc = GetDC(hwnd);
- SetRect(&rect, rand() % cxClient, rand() % cyClient, rand() % cxClient, rand() % cyClient);
- hBrush = CreateSolidBrush(RGB(rand() % , rand() % , rand() % ));
- FillRect(hdc, &rect, hBrush);
- DeleteObject(hBrush);
- ReleaseDC(hwnd, hdc);
- }
学习windows编程 day4 之 绘制随机矩形和peekMessage的更多相关文章
- 学习windows编程 day4 之 矩形的操作
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 多边矩形填充
#include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...
- 学习windows编程 day4 之 盯裆猫
写着写着就困了.... 看这些测量数据就算了,是对各种函数的练习 #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT ...
- 学习windows编程 day4 之视口和窗口
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 设置画刷
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 自定义映射
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 映射模式
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 有一定基础的 C++ 学习者该怎样学习 Windows 编程?
人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...
- 我为什么学习Windows编程
前一段时间在看TCP/IP,在图书馆里面找了不少的书,其中有几本书还是不错的.比如: <Windows网络与通信程序设计(第二版)> 王艳平著 <WinSock网络编程经络> ...
随机推荐
- Activiti解析.bpmn文件获得User Task节点的CandidateUsers特性的值
参考文档: http://www.cnblogs.com/mingforyou/p/5351332.html http://blog.csdn.net/jackyrongvip/article/det ...
- mysql 和php 保留2位小数
一般交易中保留的数字的小数位数为2位(即最小单位为 1分钱[0.01元]) 数据库设计中预金钱有关或要求精准度要高的用 decimal(n,m) 表示,n表示保留的数字长度,保留的小数位数,如deci ...
- CSS实现水平居中的5种思路
前面的话 水平居中是经常遇到的问题.看似方法较多,条条大路通罗马.但系统梳理下,其实都围绕着几个思路展开.本文将介绍关于水平居中的5种思路 text-align [思路一]:在父元素中设置text-a ...
- 一本通1609【例 4】Cats Transport
1609:[例 4]Cats Transport 时间限制: 1000 ms 内存限制: 524288 KB sol:非常偷懒的截图了事 注意:只能猫等人,不能人等猫 对于每只猫,我们 ...
- PKUWC 2019&WC 2019爆零记
PKUWC 2019&WC 2019爆零记 毕竟过了很久了,杂七杂八的东西就不写了,并且除成绩之外的内容不保证其正确性. Day1 T1:看到这道题很舒服啊,枚举top序算合法图的数量,状压D ...
- Java常用工具方法
以GET请求形式获取文本文件内容 /** * 以GET请求形式获取文本文件内容 * @param url http下载地址,比如http://www.abc.com/123.css * @return ...
- BZOJ1803Spoj1487 Query on a tree III——主席树
题目大意 给一棵有点权的n个点的有根树,保证任意两点的点权不同,m次询问每次询问x的子树中权值第k大的点. 输入 先输入n,然后每个点点权,再输入n-1行每行两个数x,y代表x和y相连,再输入m,之后 ...
- 【刷题】BZOJ 1098 [POI2007]办公楼biu
Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的 电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD ...
- Leetcode 344.反转字符串 By Python
请编写一个函数,其功能是将输入的字符串反转过来. 示例: 输入:s = "hello" 返回:"olleh" 思路 Python里面的切片用来解决这个问题就很快 ...
- Linux监控--CPU、内存、I/O
CPU top命令能够实时监控系统的运行状态,并且可以按照CPU.内存和执行时间进行排序,同时top命令还可以通过交互式命令进行设定显示,通过top命令可以查看即时活跃的进行. 内存 free命令可以 ...