MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(2)映像模式的使用(一)
来源:互联网 发布:自学编程的app 编辑:程序博客网 时间:2024/06/03 17:33
#include <windows.h>#include <string.h>#include <stdlib.h>#include <stdio.h>int nMode;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow){HWND hwnd ;MSG Msg ;WNDCLASS wndclass ;char lpszClassName[] = "映射模式"; char lpszTitle[]= "My_Map_Mode"; wndclass.style = 0; wndclass.lpfnWndProc = WndProc ;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.lpszMenuName = NULL ;wndclass.lpszClassName = lpszClassName ;if( !RegisterClass( &wndclass)){MessageBeep(0) ;return FALSE ;}hwnd = CreateWindow(lpszClassName,lpszTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow( hwnd, nCmdShow) ;//显示窗口UpdateWindow(hwnd);//绘制用户区while( GetMessage(&Msg, NULL, 0, 0))//消息循环{TranslateMessage( &Msg) ;DispatchMessage( &Msg) ;}return Msg.wParam;//消息循环结束时将信息返回系统}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){HDC hdc;PAINTSTRUCT ps;HBRUSH hB1,hB2;switch(message){case WM_LBUTTONDOWN://单击鼠标左键的消息nMode=MM_ISOTROPIC;//更改映射模式为MM_ISOTROPICInvalidateRect(hwnd,NULL,1);//刷新用户区break;case WM_RBUTTONDOWN://单击鼠标右键消息nMode=MM_ANISOTROPIC;//更改显示模式为MM_ANISOTROPICInvalidateRect(hwnd,NULL,1);//刷新用户区break;case WM_PAINT:hdc=BeginPaint(hwnd,&ps);//取得设备环境句柄SetMapMode(hdc,nMode);//设置映射模式SetWindowExtEx(hdc,150,150,NULL); //设置窗口区域SetViewportExtEx(hdc,150,100,NULL); //设置视口区域SetViewportOrgEx(hdc,150,60,NULL); //设置视口原点hB1=(HBRUSH)GetStockObject(WHITE_BRUSH);//定义白色画刷hB2=(HBRUSH)GetStockObject(BLACK_BRUSH);//定义黑色画刷SelectObject(hdc,hB1);//将黑白刷选入设备环境RoundRect(hdc,0,0,150,150,30,30);//绘制圆角矩形并填充SelectObject(hdc,hB2);//更改当前画刷为黑色画刷 Ellipse(hdc,0,10,150,140);//绘制椭圆并填充EndPaint(hwnd,&ps);//释放设备环境句柄DeleteObject(hB1);//删除画刷句柄DeleteObject(hB2);break;case WM_DESTROY: PostQuitMessage(0);break; default:return DefWindowProc(hwnd,message,wParam,lParam);}return 0;}
阅读全文
0 0
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(2)映像模式的使用(一)
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(4)映像模式的使用(二)
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(1)静态图形的绘制
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(3)移动图形的绘制
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(2)字体、颜色、下划线
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(3)动态文本的显示
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(4)竖排的古诗
- MOOC清华《VC++面向对象与可视化程序设计》第2章:编程作业-渐变图形的绘制(“万花筒”程序)
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(1)文本显示示例程序
- MOOC清华《VC++面向对象与可视化程序设计》第1章:空白窗口的创建(空项目)
- MOOC清华《VC++面向对象与可视化程序设计》第1章:空白窗口的创建(Win32项目)
- MOOC清华《VC++面向对象与可视化程序设计》第5章:对话框资源例程(模态对话框样例)
- MOOC清华《VC++面向对象与可视化程序设计》第5章:对话框资源例程(非模态对话框样例)
- MOOC清华《VC++面向对象与可视化程序设计》第3章:编程作业-艺术字的显示
- MOOC清华《VC++面向对象与可视化程序设计》第3章:补例-诗文扇面
- MOOC清华《VC++面向对象与可视化程序设计》第4章:键盘实例程序(组合键)
- MOOC清华《VC++面向对象与可视化程序设计》第4章:键盘操作例程(五个对话框)
- MOOC清华《VC++面向对象与可视化程序设计》第4章:鼠标实例程序(光标九宫格)
- linux之用xargs删除这个目录下面后缀为txt的文件(包括子目录)
- 数据可视化2---3D坐标轴
- OkHttp封装(带泛型)
- C++ 工厂+反射+配置文件
- linux下无法执行PHP命令,错误 php: command not found
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(2)映像模式的使用(一)
- DAG上的动态规划--嵌套矩形
- flume采集log4j日志到kafka
- 欢迎
- 数值分析定点迭代python3实现加绘图
- 主成分分析对随机变量标准化处理
- 第四周项目3
- 实现包含min,max,push,pop函数的栈
- C语言 数据类型占多少字节,指针占多少字节