WindowsAPI窗口矩形绘制_第1页
WindowsAPI窗口矩形绘制_第2页
WindowsAPI窗口矩形绘制_第3页
WindowsAPI窗口矩形绘制_第4页
WindowsAPI窗口矩形绘制_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、集美大学计算机工程学院实验报告课程名称:TCP/IP协议及程序设计班级:实验成绩:实验项目名称:Windows API窗口矩形绘制程序设计学号:上机实践日期:2016-04-14实验项目编号:04组号:1上机实践时间: 2学时一、 实验目的熟悉Windows程序的运行脉络,掌握运用Win32 API技术进行编程的方法。二、实验内容与设计思想设计一个简单的Win32程序,该程序窗口内正上方居中显示“Windows API绘制矩形程序演示”字样,在程序窗口内任意位置A按下鼠标左键、并拖动鼠标到任意位置B松开,可以AB为主对角线绘制矩形。并且用红色填充该矩形。三、实验使用环境操作系统: Micros

2、oft Windows XP SP2编程环境: Visual C+ 6.0中文企业版四、实验步骤和调试过程详细给出源码以及实现的效果图,并配有代码解释#include <windows.h>#include <stdio.h>static POINT pt_star,pt_end;LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdSh

3、ow) static TCHAR szAppName = TEXT ("HelloWin") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_A

4、PPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass) MessageBox (NULL, TEXT ("This program requires Windows NT!"

5、;), szAppName, MB_ICONERROR) ; return 0 ; hwnd = CreateWindow (szAppName, / window class name TEXT ("3062,3076,3080,3083,43073"), / window caption WS_OVERLAPPEDWINDOW , / window style CW_USEDEFAULT, / initial x position CW_USEDEFAULT, / initial y position CW_USEDEFAULT, / initial x size CW

6、_USEDEFAULT, / initial y size NULL, / parent window handle NULL, / window menu handle hInstance, / program instance handle NULL) ; / creation parameters ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ; DispatchMessage (&ms

7、g) ; return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) HDChdc ; PAINTSTRUCTps ;static boolbJude = false;TCHAR szBuffer = ""RECT rect ; switch (message) case WM_LBUTTONDOWN:pt_end.x = pt_star.x = LOWORD(lParam);pt_end.y = pt_star.y = HIWORD(

8、lParam);/获得按下坐标;掩盖掉第一次按下时鼠标移动bJude = true;return 0;case WM_MOUSEMOVE: if(bJude)hdc = GetDC(hwnd);SelectObject(hdc,GetStockObject(NULL_BRUSH);SetROP2(hdc,R2_NOT);/防止重影Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y);pt_end.x = LOWORD(lParam);pt_end.y = HIWORD(lParam);Rectangle(hdc,pt_star.x,pt_st

9、ar.y,pt_end.x,pt_end.y);ReleaseDC(hwnd,hdc);return 0;case WM_LBUTTONUP:bJude = false;pt_end.x = LOWORD(lParam);pt_end.y = HIWORD(lParam);InvalidateRect(hwnd,NULL,true);return 0;case WM_PAINT:hdc = BeginPaint(hwnd , &ps);SetCursor (LoadCursor (NULL, IDC_WAIT) ; ShowCursor (TRUE) ;GetClientRect (h

10、wnd, &rect) ;DrawText (hdc, TEXT ("Windows API画线程序演示"), -1, &rect, DT_SINGLELINE | DT_CENTER) ;SelectObject(hdc,CreateSolidBrush(RGB(255,0,0);Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y);EndPaint(hwnd,&ps);return 0; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; retu

11、rn DefWindowProc (hwnd, message, wParam, lParam) ; 图(1) 图(2)五、实验小结 图(3)在防重影这一块,如果没有执行这一块代码,会导致画图过程中没有图(1)的框的效果;直接出现图2的效果;本次实验过程基于实验3之上,做实验的过程中由于有上次实验的经验以及代码,编写代码的过程较快,这次实验主要是一个自制画刷的过程较为深刻,小组成员讨论较久,小组成员也深刻的体会到了SelectObject(hdc,CreateSolidBrush(RGB(255,0,0);这一语法的应用,以及在选取brush和pen的过程体会较深。case WM_PAINT:hdc = BeginPaint(hwnd , &ps);SelectObject(hdc,GetStockObject(BLACK_BRUSH);Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y);EndPaint(hwnd,&ps);return 0;这块代码是从网上找的实例,刚开始,小组成员以为会有RED_BRUSH这类语法,后来程序执行不了,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论