计算机图形学课程设计综合实验内容报告_第1页
计算机图形学课程设计综合实验内容报告_第2页
计算机图形学课程设计综合实验内容报告_第3页
计算机图形学课程设计综合实验内容报告_第4页
计算机图形学课程设计综合实验内容报告_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机图形学课程设计实验报告西南交通大学信息科学与技术学院计算机图形学实验(20142015学年 第II学期)实验报告学号:20122712 姓名:魏仁斌专业: 软件工程 班级: 4课程名称 计算机图形学 班级 软件4班 学号_20122712 姓名_魏仁斌 _试验日期 2015.3.16 实验成绩_ _ 实验名称 实验 1 集成开发环境的认识和简单窗口程序移植与创建 1. 实验目的 熟悉windows编程和VC+编程环境 2. 实验设备与环境硬件设备:设备编号设备名称数量1计算机1软件设计工具: Microsoft Visual C+ 6.0 3. 实验设计说明基本工作原理: windows

2、提供了一系列的API函数实验内容:用VC+创建工程,并且创建一个简单的窗口实验设计步骤、设计过程或执行顺序 可单击Windows桌面上的“开始”按钮,弹出开始菜单,点击所有程序Microsoft Visual Studio 6.0Microsoft Visual C+ 6.0,单击后进入开发环境。用鼠标单击 File 菜单中的 New 菜单项,在系统弹出的对话框中,有四大工作类型供操作选择:Files、Projects、Workspaces、Other Documents,每种类型又包含许多具体的文件类型。 选择 Projects 标签,在 Project name 下的编辑框中输入应用工程的

3、名称为 实验1。在 Location 标签下的编辑框中,输入保存文件的位置,也可以用鼠标点击旁边的“”按钮来选择保存文件的目录。选择 Projects 标签下的 Win32 Application,点击OK按钮后,自动创建新的工作空间。 本例选择创建空白应用工程(An empty project),单击 Finsh按钮。 点击“OK”按钮,建立空白的Win32应用工程。 用鼠标单击File菜单中New菜单项,在系统弹出的对话框中,在Files标签下,选择C+Source File,在右方的 File编辑框中输入源程序文件的名称后单击“OK” 。本例中的源程序文件名取为 test1,扩展名为 c

4、pp,可在编辑窗口中输入具体的源程序内容。实验代码:#include <windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); char szTitle="This is a Simple Program for my Windows XP" /title int APIENTRY WinMain(HINSTANCE hInstance, /application program instance handle HINSTANCE hPreInst, /the program instance

5、previous handle LPSTR lpszCmdLine, / Commandline parameter string int nCmdShow) / the program beginning how to show window HWND hWnd; MSG msg; WNDCLASS wcGRF; if (!hPreInst) /若hPeInst为零,则说明正运行的这个实例是程序的第一个实例, /仅当运行第一个实例时,需要注册窗口类(对16位程序而言) /注册窗口类如下: wcGRF.lpszClassName =szTitle; /窗口类的类名 wcGRF.hInstanc

6、e =hInstance; /定义该类的应用程序的句柄 wcGRF.lpfnWndProc =WndProc; /窗口函数 wcGRF.hCursor =LoadCursor(NULL,IDC_CROSS); /游标对象的句柄 wcGRF.hIcon =LoadIcon(NULL,IDI_APPLICATION); /图标对象的句柄 wcGRF.lpszMenuName =NULL; /标识菜单对象的字符串 wcGRF.hbrBackground =(HBRUSH):GetStockObject(WHITE_BRUSH); /used to clear handle wcGRF.style =

7、CS_HREDRAW|CS_VREDRAW; /windows style; wcGRF.cbClsExtra =0; /类变量占据的存储空间 wcGRF.cbWndExtra =0; /实例变量占用的存储空间 if (!RegisterClass(&wcGRF) /如注册失败则返回 return FALSE; / 对每个实例创建一个窗口对象 hWnd=CreateWindow(szTitle, /类名,指定该窗口所属的类 szTitle, /窗口名,即在标题栏显示的文本 WS_OVERLAPPEDWINDOW, /窗口风格,以下四个参数确定窗口初始位置及大小 30, /窗口左上角相对

8、屏幕的 X 坐标 30, /窗口左上角相对屏幕的 Y 坐标 540, /窗口宽度 360, /窗口高度 NULL, /父窗口句柄 NULL, /菜单句柄 hInstance, /实例句柄 NULL); /额外参数 ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); /消息循环 while (GetMessage(&msg,NULL,0,0) /从应用程序队列中取出一条消息 TranslateMessage(&msg); /翻译消息 DispatchMessage(&msg); /发送消息 return (msg.wParam);

9、 LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,WPARAM wParam,LPARAM lParam) HDC hdc; PAINTSTRUCT ps; RECT rect; switch (messg) case WM_PAINT : hdc=BeginPaint(hWnd,&ps); GetClientRect(hWnd,&rect); DrawText(hdc, "Hello,This Program comes from Borland c+ 5.02 !", -1,&rect,DT_CENT

10、ER|DT_VCENTER); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return(0); return DefWindowProc(hWnd,messg,wParam,lParam); 实验结果记录:4. 实验结果的分析和描述实验结果的主要组成部分:出现一个窗口显示一行文字。实验结果的分类:无实验中存在的问题:无实验可以改进的方面和建议:无课程名称 计算机图形学 班级 软件4班 学号_20122712_ 姓名_魏仁斌 _试验日期 2015.3.23 实验成绩_ _ 实验名称 实验 1 键盘

11、与鼠标的按键消息处理 1. 实验目的 熟悉集成开发环境和编辑操作,了解外围设备的工作原理,根据设备特征和产生的消息信号处理消息,管理设备。 2. 实验设备与环境硬件设备:设备编号设备名称数量1计算机1软件设计工具: Microsoft Visual C+ 6.0 3. 实验设计说明基本工作原理: 运行以上程序,可以随时获得某个字符的码值。MessageBox 函数可以弹出一个显示信息的对话框,如果按下 BackSpace 键,将弹出"the char code is HEX:8 DEC:8"显示消息窗口。表示该按键的 16 进制和十进制 ASCII 码值。当用户在应用程序窗

12、口上按下鼠标左键时,该程序将弹出一条消息,对收到的消息WM_LBUTTONDOWN 进行响应, 体现了按下鼠标左键动作与 WM_LBUTTONDOWN 消息的这种对应关系,另外程序还将在窗口内鼠标所按下的位置处写上一串提示文字。当要在窗口上写字、 绘图时, 应用程序并不直接在这些设备上操作, 而是在一个称为设备描述表(Device Contexts,简称 DC)的资源上操作的。使用 DC,应用程序不用为图形的显示与打印输出分别单独处理了。无论是打印还是显,都是在 DC 上操作,然后由 DC 映射到这些设备上。使用 DC,不用担心程序在不同的硬件上执行的差异性,DC 能够装载合适的设备驱动程序,

13、体现了应用程序的图形操作与底层设备的无关性。GetDC 函数能够返回同窗口相关连的 DC 的句柄。T extOut 函数在当前 DC 上指定的位置输出一个字符串,当按下鼠标左键时,消息WM_LBUTTONDOWN 的补充参数 lParam 中含有鼠标位置的 x,y 坐标, 其中的低 16 位含有x 坐标,高 16 位含有 y 坐标,可以分别通过 LOWORD,HIWORD 宏获得。实验内容:在窗口内单击,显示一个字符串。实验设计步骤、设计过程或执行顺序 在键盘上进行按键操作,如果是可显示字符,在屏幕上输出对应的 ASCII 码; 点击鼠标左键,在屏幕上的客户区窗口中鼠标点击的位置,输出一提示字

14、符串。实验代码:#include <windows.h> #include <stdio.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); char szTitle="This is a Simple Program for my Windows XP" /title int APIENTRY WinMain(HINSTANCE hInstance, /application program instance handle HINSTANCE hPreInst, /the program ins

15、tance previous handle LPSTR lpszCmdLine, / Commandline parameter string int nCmdShow) / the program beginning how to show window HWND hWnd; MSG msg; WNDCLASS wcGRF; if (!hPreInst) /若hPeInst为零,则说明正运行的这个实例是程序的第一个实例, /仅当运行第一个实例时,需要注册窗口类(对16位程序而言) /注册窗口类如下: wcGRF.lpszClassName =szTitle; /窗口类的类名 wcGRF.hI

16、nstance =hInstance; /定义该类的应用程序的句柄 wcGRF.lpfnWndProc =WndProc; /窗口函数 wcGRF.hCursor =LoadCursor(NULL,IDC_CROSS); /光标对象的句柄 wcGRF.hIcon =LoadIcon(NULL,IDI_APPLICATION); /光标对象的句柄 wcGRF.lpszMenuName =NULL; /标识菜单对象的字符串 wcGRF.hbrBackground =(HBRUSH):GetStockObject(WHITE_BRUSH); /used to clear handle wcGRF.s

17、tyle =CS_HREDRAW|CS_VREDRAW; /windows style; wcGRF.cbClsExtra =0; /类变量占据的存储空间 wcGRF.cbWndExtra =0; /实例变量占用的存储空间 if (!RegisterClass(&wcGRF) /如注册失败则返回 return FALSE; / 对每个实例创建一个窗口对象 hWnd=CreateWindow(szTitle, /类名,指定该窗口所属的类 szTitle, /窗口名,即在标题栏显示的文本 WS_OVERLAPPEDWINDOW, /窗口风格,以下四个参数确定窗口初始位置及大小 30, /窗

18、口左上角相对屏幕的 X 坐标 30, /窗口左上角相对屏幕的 Y 坐标 540, /窗口宽度 360, /窗口高度 NULL, /父窗口句柄 NULL, /菜单句柄 hInstance, /实例句柄 NULL); /额外参数 ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); /消息循环 while (GetMessage(&msg,NULL,0,0) /从应用程序队列中取出一条消息 TranslateMessage(&msg); /翻译消息 DispatchMessage(&msg); /发送消息 return (msg.wP

19、aram); LRESULT CALLBACK WndProc( HWND hWnd,UINT Msg,WPARAM wParam, LPARAM lParam) HDC hDC; switch(Msg) case WM_CHAR: char str40; sprintf(str,"the char code is HEX:%x DEC:%d",wParam,wParam); MessageBox(hWnd,str," KeyBoard keypress Test",MB_OKCANCEL); break; case WM_LBUTTONDOWN: Me

20、ssageBox(hWnd,"mouse click"," Mouse Press ",MB_OK); hDC=GetDC(hWnd); TextOut(hDC,LOWORD(lParam),HIWORD(lParam), " click mouse left ",strlen(" click mouse left "); ReleaseDC(hWnd,hDC); break; case WM_CLOSE: if(IDOK=MessageBox(NULL,"真的要要退出吗?", " W

21、indow Close ",MB_OKCANCEL|MB_ICONQUESTION) DestroyWindow(hWnd); break; case WM_PAINT: PAINTSTRUCT ps; hDC=BeginPaint(hWnd,&ps); /在WM_PAINT里必须用这个函数 TextOut(hDC,0,0," Mouse Left Button and Key Test", strlen(" Mouse Left Button and Key Test"); EndPaint(hWnd,&ps); break;

22、 case WM_DESTROY: PostQuitMessage(0); break; default: return(DefWindowProc(hWnd,Msg, wParam,lParam ); return (0); 实验结果记录:4. 实验结果的分析和描述实验结果的主要组成部分:响应鼠标左键 键盘按键 退出窗口实验结果的分类:1. 当点击鼠标左键的时候,显示 “mouse click”。2. 当在键盘上按下一个按键时,显示 “the char is HEX:* DEC:*”。3. 当关闭窗口时,提示“真的要退出吗?”。 实验中存在的问题:不能显示组合键实验可以改进的方面和建议:读取

23、组合键的高低位。课程名称 计算机图形学 班级 软件4班 学号_20122712_ 姓名_魏仁斌 _试验日期 2015.3.30 实验成绩_ _ 实验名称 实验 2 设计一个指针式椭圆形实时显示时钟 1. 实验目的 掌握定时器的响应处理方式,掌握简单绘图函数的使用和应用程序设计。 2. 实验设备与环境硬件设备:设备编号设备名称数量1计算机1软件设计工具: Microsoft Visual C+ 6.0 3. 实验设计说明基本工作原理: 设当前需要显示的时间为Hour时Minute 分Second秒,则经过简单计算就可得到各个指针实时显示夹角。计算依据为: 时钟指针实时显示的夹角:AHour =(

24、Hour +Minute/60 +Second/3600) * 2/12; 分钟指针实时显示的夹角:AMinute =(Minute+Second/60) * 2/60; 秒钟指针实时显示的夹角:ASecond =Second * 2/60; 时钟的钟面用椭圆形显示,椭圆的中心位置可以确定在客户窗口的显示中心; 绘制时、分、针时,用不同颜色的直线段显示,长度分别为椭圆半长轴的1/3、2/3、4/5; 时钟表面的时间刻度,可用角度划分的方式均匀划分成12份,并用112的数字表示。 时间的获取方法:利用计时器的响应函数处理,每秒钟更新一次时钟画面,重画时钟的各个指针,各指针的位置可以通过显示夹角的

25、计算得到,达到实时显示时钟的目标。实验内容:利用消息映射与类中对应的成员函数,设计一个指针式椭圆形实时显示时钟。实验设计步骤、设计过程或执行顺序1. 添加成员函数2. 修改函数OnTimer的代码3. 生成新的类4. 建立响应函数实验代码:void CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here/获取客户区 RECT Rect; GetClientRect(&Rect); /计算椭圆中心位置 int Cen

26、terX = Rect.right/2; int CenterY = Rect.bottom/2; /取当前时间 CTime Time = CTime:GetCurrentTime(); CString str; int i,x,y; CSize size; /创建一支黑色的笔,用来画椭圆 CPen Pen(PS_SOLID,5,RGB(0,0,0); /先记下以前的画笔, 再设置当前画笔 CPen *OldPen = pDC->SelectObject(&Pen); /绘制钟面椭圆 pDC->Ellipse(5,5,Rect.right-5,Rect.bottom-5);

27、 double Radians; /设置字体颜色为黑色 pDC->SetTextColor(RGB(255,0,0); for(i = 1;i <= 12;i+) /格式化钟点值 str.Format("%d",i); size = pDC->GetTextExtent(str,str.GetLength(); Radians = (double)i*6.28/12.0; /计算钟点放置的位置 x = CenterX - (size.cx/2) + (int)(double)(CenterX - 20)* sin(Radians); y = CenterY

28、 - (size.cy/2) - (int)(double)(CenterY - 20)* cos(Radians); /绘制钟点 pDC->TextOut(x,y,str); /计算时钟指针的夹角 Radians = (double)Time.GetHour() + (double)Time.GetMinute()/60.0 + (double)Time.GetSecond()/3600.0; Radians *= 6.28/12.0; /创建时钟指针画笔 CPen HourPen(PS_SOLID,5,RGB(0,255,0); pDC->SelectObject(&H

29、ourPen); /绘制时钟指针 pDC->MoveTo(CenterX,CenterY); pDC->LineTo(CenterX + (int)(double)(CenterX/3)*sin(Radians), CenterY - (int)(double)(CenterY/3)*cos(Radians); /计算分钟指针的夹角 Radians = (double)Time.GetMinute()+(double)Time.GetSecond()/60.0; Radians *= 6.28/60.0; /创建分钟指针画笔 CPen MinutePen(PS_SOLID,3,RG

30、B(0,0,255); pDC->SelectObject(&MinutePen); /绘制分钟指针 pDC->MoveTo(CenterX,CenterY); pDC->LineTo(CenterX + (int)(double)(CenterX*2)/3)*sin(Radians), CenterY - (int)(double)(CenterY*2/3)*cos(Radians); /计算秒钟指针的夹角 Radians = (double)Time.GetSecond(); Radians *= 6.28/60.0; /创建秒钟指针画笔 CPen SecondP

31、en(PS_SOLID,1,RGB(255,0,0); pDC->SelectObject(&SecondPen); /绘制秒钟指针 pDC->MoveTo(CenterX,CenterY); pDC->LineTo(CenterX + (int)(double)(CenterX*4)/5)*sin(Radians), CenterY - (int)(double)(CenterY*4)/5*cos(Radians); pDC->LineTo(CenterX - (int)(double)(CenterX)/5)*sin(Radians), CenterY +

32、(int)(double)(CenterY)/5*cos(Radians);pDC->SelectObject(OldPen); 实验结果记录:4. 实验结果的分析和描述实验结果的主要组成部分:出现一个窗口,显示的是一个时钟。实验结果的分类:无实验中存在的问题:指针没有延伸实验可以改进的方面和建议:起始点把指针从圆心加上180度延长1/3的长度。课程名称 计算机图形学 班级 软件4班 学号_20122712_ 姓名_魏仁斌 _试验日期 2015.4.13 实验成绩_ _ 实验名称 实验 3 设屏幕可用显示模式和分辨率的获取与显示 1. 实验目的 了解显示器的工作原理,了解屏幕的可用显示模

33、式和分辨率的关系。 2. 实验设备与环境硬件设备:设备编号设备名称数量1计算机1软件设计工具: Microsoft Visual C+ 6.0 3. 实验设计说明基本工作原理: 对于系统设备的显示特性信息的获取,Windows 系统有一个关键的API 函数EnumDisplaySettings(),用来获得当前显示驱动所支持的所有显示模式。调用方式为:EnumDisplaySettings(NULL,modenum,&devmode);通过modenum的递增可以获取当前显示驱动所支持的所有显示模式。再将获得的显示模式的数据存入列表框,并在屏幕上显示出来。系统定义和封装了DEVMODE

34、 类型的数据结构,描述了获取显示器的各类属性值。通常情况下用到的成员变量有:devmode 是DEVMODE 类型的数据结构的指针。dmSize:所用DEVMODE 数据结构的大小(以Bytes 为单位);dmBitsPerPel :每象素所使用的显存位数(Bits);dmPelsWidth :水平分辨率(点数);dmPelsHeight Pixel height :垂直分辨率(点数);dmDisplayFrequency :显示刷新率,以赫兹为单位;dmFields:取DM_PELSWIDTH,DM_PELSHEIGHT,DM_BITSPERPEL,DM_DISPLAYFREQUENCY等四

35、种值之一或它们的组合;通常情况下,不同的显示设备(如打印机)用到的DEVMODE 数据结构的内容不同,比如设定打印机时,不会用到dmDisplayFrequency属性。所以,在使用DEVMODE 数据结构时,应向系统说明具体用到的有效数据成员,dmFields的用处便在于此。如果在程序中只用到dmPelsWidth(水平分辨率)和dmPelsHeight(垂直分辨率),那么该值应为DM_PELSWIDTH|DM_PELSHEIGHT实验内容:获取显示器的各种显示模式和对应的分辨率,并将这些数据显示在屏幕上,以利于用户观察。实验设计步骤、设计过程或执行顺序1.利用MFC AppWizard(E

36、XE)向导生成一个基于对话框单文档的应用程序框架。2. 添加全局变量:int modenum=0,done;DEVMODE lpdevmode;CString stemp,lpdevstring1028;3. 分别为编辑框、列表框添加成员变量UINT m_mode_num、CListBox m_list_dlg用于数据交换;4. 分别为编辑框、列表框添加成员变量UINT m_mode_num、CListBox m_list_dlg用于数据交换;5. 编译链接并运行程序实验代码:/ MyTestScrxydlgDlg.cpp : implementation file/#include &quo

37、t;stdafx.h"#include "MyTestScrxydlg.h"#include "MyTestScrxydlgDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg

38、)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDial

39、og(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/全局变量int modenum=0,d

40、one;DEVMODE lpdevmode;CString stemp,lpdevstring1028;/ CMyTestScrxydlgDlg dialogCMyTestScrxydlgDlg:CMyTestScrxydlgDlg(CWnd* pParent /*=NULL*/): CDialog(CMyTestScrxydlgDlg:IDD, pParent)/AFX_DATA_INIT(CMyTestScrxydlgDlg)m_mode_num = 0;/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent Des

41、troyIcon in Win32done=0;modenum=0;m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CMyTestScrxydlgDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMyTestScrxydlgDlg)DDX_Control(pDX, IDC_LIST2, m_list_dlg);DDX_Text(pDX, IDC_EDIT1, m_mode_num);/AFX_DATA_MAPBEGIN_M

42、ESSAGE_MAP(CMyTestScrxydlgDlg, CDialog)/AFX_MSG_MAP(CMyTestScrxydlgDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyTestScrxydlgDlg message handlersBOOL CMyTestScrxydlgDlg:OnInitDialog()CDialog:OnInitDialog();/ Add "A

43、bout." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAb

44、outMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FAL

45、SE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CMyTestScrxydlgDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If

46、you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CMyTestScrxydlgDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessa

47、ge(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc

48、.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CMyTestScrxydlgDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMyTestScrxydlgDlg:OnButton1() / TODO: Add your control notification handler cod

49、e heredone=0;modenum=0;dodone=!(EnumDisplaySettings(NULL,modenum,&lpdevmode);lpdevmode.dmSize =sizeof(DEVMODE);lpdevmode.dmFields=DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;Sleep(30);lpdevstringmodenum=""stemp.Format("%d",lpdevmode.dmBitsPerPel,10);lpdevstringmodenum=lpdevstringmodenum+"BitsPerPixel:"+stemp;stemp.F

温馨提示

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

评论

0/150

提交评论