资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
VC+VC+面向对象可视化编程创建窗口及填充面向对象可视化编程创建窗口及填充- -报告报告一.实验目的: 理解如何创建窗口及其填充,认识创建窗口的函数。 二.实验内容: 1. 创建窗口: 程序代码#include /包含应用程序中所需的数据类型和数据结构的定义 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= “昆工“; /窗口标题名 /窗口类的定义 wndclass.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( 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(DispatchMessage( return Msg.wParam; /消息循环结束即程序终止时将信息返回系统 LRESULT CALLBACK WndProc( HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) switch(message) case WM_DESTROY:PostQuitMessage(0);default: /默认时采用系统消息默认处理函数return DefWindowProc(hwnd,message,wParam,lParam); return(0); 结果:出现一个名为“昆工”的白色窗口 2. 字符填充:程序代码:#include #include #include long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam); BOOL InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(HINSTANCE hInstance,int nCmdShow); HWND hWndMain; /主函数 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(DispatchMessage(return Message.wParam; /消息处理函数 long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) static long nXChar,nCaps,nYChar;HDC hDC; /定义指向设备上下文的句柄 short x;TEXTMETRIC tm;short LnCount=6;PAINTSTRUCT PtStr; /定义指向包含绘图信息的结构体变量static char *textbuf=“昆明理工大学“,; switch(iMessage) /处理消息case WM_CREATE: /处理窗口创建消息hDC=GetDC(hWnd) ; /获取当前设备表句柄GetTextMetrics(hDC, /获取字体信息nXChar=tm.tmAveCharWidth; /获取字符宽度nYChar=tm.tmHeight+tm.tmExternalLeading;nCaps=(tm.tmPitchAndFamilyReleaseDC(hWnd,hDC); /释放当前设备句柄return 0;case WM_PAINT: /处理重画消息hDC=BeginPaint(hWnd, /开始绘画for(x=0;xLnCount;x=x+1) /输出文本TextOut(hDC,nXChar,nYChar*(1+x),textbufx,lstrlen(textbufx); EndPaint(hWnd,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;hWndMain=hWnd;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.CS_HREDRAW|CS_VREDRAW;return RegisterClass( 运行结果:出现一个由“昆明理工大学”字样填充的名为“昆工”的白色窗口。三:窗口流程图: 略,找站长 四:四:结结果:果:1 2 五五心得体会:通过同学的帮助和找资料,终于完成此次上机实验,感觉自己编程能力还不强,以后 需要努力。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号