windows可视化编程(二)
来源:互联网 发布:北京工业大学 网络 编辑:程序博客网 时间:2024/06/04 01:12
这节总结下笔刷的使用,首先看程序
#include<windows.h>#include<stdlib.h>#include<string.h>long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MSG Message;if(!InitWindowsClass(hInstance))return FALSE;if(!InitWindows(hInstance,nCmdShow))return FALSE;while(GetMessage(&Message,0,0,0))//消息循环{TranslateMessage(&Message);DispatchMessage(&Message);}return Message.wParam;}long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam){HDC hDC; //定义指向设备上下文的句柄HBRUSH hBrush; //定义指向画刷的句柄HPEN hPen;//定义指向画笔的句柄PAINTSTRUCT PtStr; //定义指向包含绘图信息的结构体变量switch(iMessage) //处理消息{case WM_PAINT: //处理绘图消息hDC=BeginPaint(hWnd,&PtStr);SetMapMode(hDC,MM_ANISOTROPIC); //设置映射模式hPen=(HPEN)GetStockObject(BLACK_PEN);//设置画笔为系统预定定义的黑色画笔hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); //采用系统预定义的深灰色画刷SelectObject(hDC,hBrush); //选择画刷SelectObject(hDC,hPen); //选择画笔RoundRect(hDC,50,120,100,200,15,15); //圆角矩形hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH); //采用系统预定义的淡灰色画刷SelectObject(hDC,hBrush); //选择画刷Ellipse(hDC,150,50,200,150); //椭圆hBrush=(HBRUSH)GetStockObject(HOLLOW_BRUSH); //采用系统预定义的虚画刷SelectObject(hDC,hBrush); //选择画刷Pie(hDC,250,50,300,100,250,50,300,50); //饼形EndPaint(hWnd,&PtStr); //结束绘图return 0;case WM_DESTROY: //结束应用程序PostQuitMessage(0);return 0;default://其他消息处理程序return(DefWindowProc(hWnd,iMessage,wParam,lParam)) ;}}BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)//初始化窗口{HWND hWnd;hWnd=CreateWindow("WinFill", //生成窗口"填充示例程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);if(!hWnd)return FALSE;ShowWindow(hWnd,nCmdShow);//显示窗口UpdateWindow(hWnd);return TRUE;}BOOL InitWindowsClass(HINSTANCE hInstance) //定义窗口类{WNDCLASS WndClass;WndClass.cbClsExtra=0;WndClass.cbWndExtra=0;WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);WndClass.hIcon=LoadIcon(NULL,"END");WndClass.hInstance=hInstance;WndClass.lpfnWndProc=WndProc;WndClass.lpszClassName="WinFill";WndClass.lpszMenuName=NULL;WndClass.style=CS_HREDRAW|CS_VREDRAW;return RegisterClass(&WndClass);}
首先这个程序在架构上比上一篇程序更加清晰,把注册类,创建窗口写到了两个函数里面。框架搭好了我们就只要处理winproc就行了。
在展示窗口的时候会有一个WM_PAINT消息产生,我们就是要处理这个消息,画刷画笔画图分为以下几步:
① 创建句柄,hdc,hbrush,hpen和定义指向包含绘图信息的结构体变量PtStr;
②获取句柄实例,hdc 通过BeginPaint(hWnd,&PtStr)函数,brush hpen通过GetStockObject
③设置 映射 SetMapMode(hDC,MM_ANISOTROPIC) 不同映射模式效果坐标有所不同
④利用SelectObject选择画笔花刷
⑤利用函数画图:movetoex linetoex polyline arc等等
⑥EndPaint(hWnd,&PtStr)结束画图
阅读全文
0 0
- windows可视化编程(二)
- windows可视化编程(一)
- windows可视化编程(三)
- windows可视化编程(四)
- windows可视化编程(五)
- windows可视化编程(6)
- Windows网络编程(二)
- Win32 Windows编程 二
- windows编程实验二
- windows编程二
- 可视化编程
- 可视化编程
- 可视化编程
- 可视化编程
- 可视化编程
- 实例:Windows标准控件在可视化编程中的应用
- Windows Socket 网络编程(二)
- Windows核心编程笔记(二)
- 如何利用Halcon中的快速傅里叶变换(FFT)
- 数据库系统原理(自考4、5、6、7)
- com.android.build.transform.api.TransformException
- Untiy 访问组件(二)
- 2017百度之星资格赛-1005 寻找母串
- windows可视化编程(二)
- python 断言
- SpringCloud---Eureka添加用户认证
- 求二叉树的先序遍历
- 最短路判负环uva11090
- 01背包
- css3实现点击切换背景图片,并且背景图片实现动画效果
- 线程
- HDU 1029 Ignatius and the Princess IV