图标光标和窗口课件

上传人:我*** 文档编号:145734602 上传时间:2020-09-23 格式:PPT 页数:35 大小:389KB
返回 下载 相关 举报
图标光标和窗口课件_第1页
第1页 / 共35页
图标光标和窗口课件_第2页
第2页 / 共35页
图标光标和窗口课件_第3页
第3页 / 共35页
图标光标和窗口课件_第4页
第4页 / 共35页
图标光标和窗口课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《图标光标和窗口课件》由会员分享,可在线阅读,更多相关《图标光标和窗口课件(35页珍藏版)》请在金锄头文库上搜索。

1、5.1 图像编辑器,5.1.1 图像编辑器 1. 创建一个新的图标或光标 在Visual C+ 6.0中,创建一个应用程序后,当按快捷键Ctrl+R就可打开“插入资源”对话框,从中选择Cursor(光标)或Icon(图标)资源类型,单击新建按钮后,系统为程序添加一个新的图标或光标资源,同时在开发环境右侧出现图像编辑器。,新设备按钮,在创建新图标或光标的时候,图像编辑器首先创建的是一个适合于VGA环境中的图像,开始的时候它以屏幕色(透明方式)来填充。对于创建的新光标,其“热点”被初始化为左上角的点,坐标为(0,0)。默认情况下,图像编辑器所支持的显示设备下表所示。,5.1 图像编辑器,2. 选用

2、和定制显示设备 在图像编辑器工作窗口的控制条上,有一个“新设备图像”(New Device Image)按钮,单击此按钮后,系统弹出相应的新设备列表,可以从中选取需要的显示设备。除了对话框列表框显示的设备外,还可以单击自定义按钮,在弹出的对话框中定制新的显示设备。,5.1 图像编辑器,3. 设置光标热点 Windows系统借助光标“热点”来确定光标实际的位置。在图像编辑器的控制条上或光标属性对话框中都可以看到当前的光标“热点”位置。,5.1 图像编辑器,5.2 图标,5.2.1 图标的调入、清除和显示 1. 图标的调入 HICON LoadIcon( LPCTSTR lpszResourceN

3、ame ) const; HICON LoadIcon( UINT nIDResource ) const; HICON LoadStandardIcon( LPCTSTR lpszIconName ) const; IDI_APPLICATION 默认的应用程序图标 IDI_HAND 手形图标(用于严重警告) IDI_QUESTION 问号图标(用于提示消息) IDI_EXCLAMATION 警告消息图标(惊叹号) IDI_ASTERISK 消息图标,2. 图标的消除 全局函数DestroyIcon来删除图标,并释放为图标分配的内存,其原型如下: BOOL DestroyIcon( HICO

4、N hIcon ); 3. 图标的显示 一是通过静态图片控件来显示,或在其他(如按钮)控件设置显示; 二是通过函数CDC:DrawIcon用来将一个图标绘制在指定设备的位置处. 图标示例 参见程序(EX_RandIcon),5.2 图标,5.2.2 应用程序图标的改变 在用MFC AppWizard创建的应用程序中,图标资源IDR_MAINFRAME用来表示应用程序窗口的图标,通过图像编辑器可将其内容直接修改。 DWORD SetClassLong( HWND hWnd, int nIndex, LONG dwNewLong); DWORD GetClassLong( HWND hWnd, i

5、nt nIndex); GCL_HBRBACKGROUND GCL_HCURSOR GCL_HICON GCL_MENUNAME,5.2 图标,例Ex_Icon 图标使用,5.2 图标,5.2.3 获取系统文件图标 在应用程序中,使用最新标准的图标,仍然需要通过相应的API函数来获取。SHGetFileInfo就是其中一个这样的函数,它用来获取指定文件或文件的图标,其原型如下: DWORD_PTR SHGetFileInfo( LPCTSTR pszPath, DWORD dwFileAttributes, SHFILEINFO FAR *psfi, UINT cbFileInfo, UINT

6、 uFlags);,5.2 图标,其中,uFlags用来指定返回内容的一些标志,如: SHGFI_ICON | SHGFI_OPENICON(返回文件打开时的图标)、SHGFI_ICON | SHGFI_ICON | SHGFI_SMALLICON(返回文件的小图标)、SHGFI_TYPENAME(返回文件的类型名称,保存在psfi中的szTypeName成员)。,5.2 图标,例Ex_FileIcon 获取文件图标,5.2 图标,5.2.4 托盘图标操作 1. 添加或删除图标 Windows提供了任务栏相应的应用程序接口,从而通过Shell_NotifyIcon函数很容易地向任务栏的托盘添加

7、或删除图标。Shell_NotifyIcon的原型如下,例Ex_Tray 托盘图标操作,5.2 图标,2. 处理鼠标消息 当用户在图标所在的区域中进行鼠标操作时,都会向窗口发送相应消息(该消息由添加托盘时在NOTIFYICONDATA结构的uCallbackMessage指定)。应用程序通过对这些消息的处理,便可执行相应的动作。,5.3 光标,1. 使用系统光标 Windows预定义了一些经常使用的标准光标,这些光标均可以使用函数 CWinApp: LoadStandardCursor加载到程序中,其函数原型如下: HCURSOR LoadStandardCursor( LPCTSTR lps

8、zCursorName ) const; IDC_ARROW 标准箭头光标 IDC_IBEAM 标准文本输入光标 IDC_WAIT 漏斗型计时等待光标 IDC_CROSS 十字形光标 IDC_UPARROW 垂直箭头光,加载一个垂直箭头光标IDC_UPARROW的代码如下: HCURSOR hCursor; hCursor = AfxGetApp()-LoadStandardCursor(IDC_UPARROW); 2. 使用光标资源 HCURSOR LoadCursor( LPCTSTR lpszResourceName ) const; HCURSOR LoadCursor( UINT n

9、IDResource ) const; 其中,lpszResourceName和nIDResource分别用来指定光标资源的名称或ID号。 需要说明的是,也可直接用全局函数LoadCursorFromFile加载一个外部光标文件。,5.3 光标,3. 更改程序中的光标 更改应用程序中的光标除了可以使用GetClassLong和SetClassLong函数外,最简单的方法是用MFC ClassWizard映射WM_SETCURSOR消息,该消息是当光标移动到一个窗口内并且还没有捕捉到鼠标时产生的。afx_msg BOOL OnSetCursor( CWnd* pWnd, UINT nHitTes

10、t, UINT message ); 其中,pWnd表示拥有光标的窗口指针,nHitTest用来表示光标所处的位置,例如当为HTCLIENT时表示光标在窗口的客户区中 message用来表示鼠标消息。,5.3 光标,例Ex_Cursor 改变应用程序光标 例如,可根据当前鼠标所在的位置来确定单文档应用程序光标的类型,当处在标题栏时为一个动画光标,当处在客户区时为一个自定义光标。,5.3 光标,5.4 窗口样式和状态,5.4.1 窗口样式 窗口样式通常有一般(以WS_为前缀)和扩展(以WS_EX_为前缀)两种形式。这两种形式的窗口样式可在函数CWnd:Create或CWnd:CreateEx参数

11、中指定,其中CreateEx函数可同时支持以上两种样式,而CWnd:Create只能指定窗口的一般样式。需要说明的是,对于控件和对话框这样的窗口来说,它们的窗口样式可直接通过其属性对话框来设置。常见的一般窗口样式如表5.2所示。,5.4 窗口样式和状态,5.4.1 窗口样式 需要说明的是,除了上述样式外,框架窗口还有以下3个自己的样式。它们都可以在PreCreateWindow重载函数中指定。 (1)FWS_ADDTOTITLE。该样式指定一个文档名添加到框架窗口标题中。对于单文档应用程序来说,默认的文档名是“无标题”。 (2)FWS_PREFIXTITLE。该样式使得框架窗口标题中的文档名显

12、示在应用程序名之前。 (3)FWS_SNAPTOBARS。该样式用来调整窗口的大小,使它刚好包含了框架窗口中的控制栏(如工具栏)。,5.4.1 窗口样式设置 1. 在MFC AppWizard中设置 MFC AppWizard 有一个高级按扭(在创建单文档或多文档应用程序过程的第四步中),允许用户指定有关SDI和MDI框架窗口的属性。,5.4 窗口样式和状态,修改CREATESTRUCT结构 当窗口创建之前,系统自动调用PreCreateWindow虚函数。在用MFC AppWizard创建文档应用程序结构时,MFC已为主窗口或文档窗口类自动重载了该虚函数。用户可以在此函数中通过修改CREAT

13、ESTRUCT结构来设置窗口的绝大多数样式。,5.4 窗口样式和状态,例如,在单文档应用程序中,框架窗口默认的样式是WS_OVERLAPPEDWINDOW和FWS_ADDTOTITLE的组合,更改其样式可如下列的代码:,BOOL CMainFrame:PreCreateWindow(CREATESTRUCT ,5.4 窗口样式和状态,3. 使用ModifyStyle和ModifyStyleEx CWnd类中的成员函数ModifyStyle和ModifyStyleEx也可用来更改窗口的样式,其中ModifyStyleEx还可更改窗口的扩展样式。这两个函数具有相同的参数,其含义如下。 BOOL M

14、odifyXXXX( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 ); 其中,参数dwRemove用来指定需要删除的样式,dwAdd用来指定需要增加的样式,nFlags表示SetWindowPos的标志,0(默认)表示更改样式的同时不调用SetWindowPos函数。,5.4 窗口样式和状态,由于框架窗口在创建时不能直接设定其扩展样式,因此只能通过调用ModifyStyle函数来进行。例如用MFC ClassWizard为一个多文档应用程序Ex_MDI的子文档窗口类CChildFrame添加OnCreateClient消息处理,并增加下列代码: M

15、odifyStyle(0, WS_VSCROLL, 0);,添加的滚动条,5.4 窗口样式和状态,5.4.3 窗口状态改变 MFC AppWizard为每个窗口设置了相应的大小和位置,但默认的窗口状态有时并不那么令人满意,这时就需要对窗口状态进行适当的改变。 1. 用ShowWindow改变窗口的显示状态 当应用程序运行时,Windows会自动调用应用程序框架内部的WinMain函数,并自动查找该应用程序类的全局变量theApp,然后自动调用用户应用程序类的虚函数InitInstance,该函数会进一步调用相应的函数来完成主窗口的构造和显示工作。,5.4 窗口样式和状态,如下面的代码: m_p

16、MainWnd-ShowWindow(SW_SHOW); m_pMainWnd-UpdateWindow(); 代码中,m_pMainWnd是主框架窗口指针变量,ShowWindow是CWnd类的成员函数,用来按指定的参数显示窗口。通过指定ShowWindow函数的参数值可以改变改变窗口显示状态。例如下面的代码是将窗口的初始状态设置为“最小化”: m_pMainWnd-ShowWindow(SW_SHOWMINIMIZED); m_pMainWnd-UpdateWindow();,5.4 窗口样式和状态,需要说明的是,由于用户应用程序类继承了基类CWinApp的特性,因此也可在用户应用程序类中使用公有型(public)成员变量m_nCmdShow,通过对其进行赋值,同样能达到效果。例如上述代码可改写为: m_nCmdShow = SW_SHOWMINIMIZED m_pMainWnd-ShowWindow(m_nCmdShow); m_pMainWnd-UpdateWindow();,5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号