欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    windows编程技术第12章-Windows中的资源.ppt

    • 资源ID:33282654       资源大小:203.50KB        全文页数:28页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    windows编程技术第12章-Windows中的资源.ppt

    12.1.2 资源和资源脚本文件资源也是一种数据,他们在资源脚本文件RC(文本文件,以.RC为文件扩展名)中定义了应用程序所需的数据,即菜单、对话框、图标等资源数据。例如:Myhouse Icon House.ICO在磁盘上的在磁盘上的House.ICO关键词关键词可在主程序中使用的图标名可在主程序中使用的图标名Windows应用程序生成过程关于资源的生成关于资源的生成C(C+)语言编译器.C(C+).H.OBJ.DEF.LIBTLINK链接器.ICO.CUR.BMP.FNT.DLG资源编辑器.RC资源描述文件(文本文件)资源编译器.RES(二进制文件)资源链接器.EXE可执行文件(应用程序).EXE集成编译链接12.2 图标资源图标、光标(游标)本质上都是位图,只不过它们都被限制了一定的尺寸,分别被用在不同的地方。字符串也是一种资源类型,它给程序提供了另外一种输出文本字符串的方法。内建图标StopIDI_HAND?IDI_QUESTION!IDI_EXCLAMATION*IDI_ASTERISK12.2.2 图标应用的基本方法Windows 2000应用程序支持三种不同的图标尺寸:256色(48X48)、32色(32X32)和16色(16X16)图标。在应用程序最小化时,小图标显示在应用程序窗口的左上角;大图标用于桌面图标或大图标试图中。三种图标都使用同一个标识符或者名称,系统直到把不同的尺寸的图标用在何处。步骤:在资源脚本文件中添加:IDI_MYICON ICON DISCARDABLE ”iconl.ico”在主程序中加入:常用的方法WNDCLASS wndclass;wndclass.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MYICON);其他方法:函数LoadImage也可以将图标资源装载到应用程序的窗口类,并且功能更强。wndclass.hIcon = LoadImage (hInstance, MAKEINSTRESOURCE( IDI_MYICON), IMAGE_CURSOR, 32, 32, LR_DEFAULTCOLOR) ;函数SetClassLong非常有用,它可以在程序执行期间,动态地更改窗口类指定的图标、光标、菜单甚至窗口过程等属性。DWORD SetClassLong(HWND hWnd,int nIndex,LONG dwNewLong);12.2.2 例题ICONDEMOICONDEMO.C涉及函数DrawIcon(HDC hdc, int X, int Y, HICON hIcon) LoadIcon(hInstance, MAKEINTRESOURCE( IDI_ICON ) );打开源程序打开源程序12.2.3 大图表、小图标的应用ICONDEMO.C涉及函数DrawIcon(HDC hdc, int X, int Y, HICON hIcon) LoadIcon(hInstance, MAKEINTRESOURCE( IDI_ICON ) );cxIcon = GetSystemMetrics(SM_CXICON);/取得图标的尺寸cyIcon = GetSystemMetrics(SM_CYICON);/取得图标的尺寸大图标(32X32)会自动转换成小图标(16X16)一般地讲,Studio中建立一个32X32的大图标,大图标将自动在文件夹中显示,如果在标题栏中,则自动会把大图标缩成小图标(16X16)显示。为什么还要编辑一个小图标:由于大图标在自动转换成小图标,某些复杂的图标会失真,因此最好的办法是在建立一个小图标。打开源程序打开源程序12.3 使用自定义的光标系 统 提 供 了 一 些 预 定 义 的 鼠 标 光 标 。 标 识 符 为IDC_ARROW,IDC_MOVE,IDC_WAIT或IDC_CROSS等。在资源脚本文件中,自定义光标的描述如下:IDC_MYCURSOR CURSOR DISCARDABLE “cursor1.cur” 自定义的光标资源保存在文件(如cursor1.cur)中,在定义窗口类时,可以把自定义的光标设置为窗口类默认的光标。wndclass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE (IDC_MYCURSOR) );特别是在鼠标消息WM_MOUSEMOVE的处理期间,这个函数非常有用。case WM_MOUSEMOVE:hCursor = LoadCursor (hInst, MAKEINTRESOURCE( IDC_MYCURSOR ) );SetCursor(hCursor);12.3.2 用SetClassLong设置窗口中的光标如果在运行过程中希望改变窗口内的默认光标,可以用SetClassLong函数hCursor = LoadCursor(hInstance,TEXT(“childcursor”); / 其中SetClassLong(hwnd, GCL_HCURSOR, hCursor); 或 者 , 动 态 设 置 光 标 。 特 别 是 在 鼠 标 消 息WM_MOUSEMOVE的处理期间,这个函数非常有用。SetCursor(hCursor);例如:case WM_MOUSEMOVE:hCursor = LoadCursor (hInst, MAKEINTRESOURCE( IDC_MYCURSOR ) );SetCursor(hCursor);12.4 使用字符串资源(自学)使用字符串资源,提供了一种完全不同的使用字符串的方法,字符串被放在资源脚本文件中。程序在需要它们时,通过每个字符串唯一的标识符来获得字符串。STRING TABLE DISCARDABLEBEGINGIDS_ERROR “错误:2002nn由于某种原因,网页不能打开!” IDS_MESSAGE “我是超级链接”END LoadString将字符串数据从资源文件中复制到内存缓冲区。int LoadString(HINSTANCE hInstance,UINT uID,LPTSTR lpBuffer,int nBufferMax);12.4.2图标、光标和字符串资源的应用实例(补充)SimulateLink.c -演示图标、光标和字符串资源的使用(模拟网页中的超级链接)12.5 菜单和快捷键资源 12.5.1 菜单概念菜单是Windows图形用户界面中窗口的重要组成部分。使用菜单可以使用户了解并方便地使用应用程序提供的各项功能;使用快捷键资源可使菜单的操作更方便。三种菜单:主菜单,下拉式菜单,浮动式菜单菜单本质上是层次嵌套的。鼠标点击菜单项,则触发一个菜单事件,程序捕获该事件进行管理。12.5.2 菜单代号、菜单项ID与菜单ID 对下拉式菜单来说,可以拉出菜单名以及唯一标识该菜单项的ID。菜单项有三个特性菜单名,它可以是字符串或点阵图。菜单项的ID,单击菜单项时,Windows向包含菜单项的菜单所在的窗口发送WM_COMMAND消息,LOWORD(wParam)是向应用程序窗口函数发送的下拉式菜单的代号(通知码)菜单项的属性,包括是否被禁用、无效化或被选择。12.5.3 在程序中引用菜单在创建菜单资源后,有三种方法可以实现菜单与程序窗口的关联:(1) 在窗口类中加载菜单wndclass.lpszMenuName = lpMenuName;(2) 创建窗口时加载菜单HMENU LoadMenu(HINSTANCE hInstance, LPCTSTR lpMenuName); (3) 动态加载菜单应用程序窗口调用函数LoadMenu获取菜单句柄后,还可以通过调用函数SetMenu动态地加载菜单,以提高程序的灵活性。BOOL SetMenu(HWND hWnd, HMENU hMenu);12.5.4 和菜单有关的窗口消息WM_INITMENU当一个主菜单创建时,发出的消息。WM_MENUSELECT用户在菜单项中移动光标或者鼠标,应用程序会受到许多WM_MENUSELECT消息WM_INITMENUPOPUP准备显示一个弹出式下拉式菜单时,发送的消息。WM_COMMAND当用户选择一个菜单项时,Windows通常会向菜单所在的窗口函数发送WM_COMMAND消息,LOWORD(wParam)是菜单项的IDWM_MENUCHAR如果用户按下Alt键和一个与菜单项不匹配的字符时,或者在显示下拉式菜单时,用户按下一个与下拉式菜单里的项目不匹配的字符键。WM_INITMENUWM_INITMENUPOPUPWM_MENUSELECTWM_INITMENUPOPUPWM_COMMANDWM_MENUSELECTWM_MENUSELECTWM_MENUSELECTWM_MENUSELECT其他菜单消息(参考) WM_SYSCOMMAND消息与WM_COMMAND消息类似,只不过它是用户选择系统菜单的菜单项时,发送到窗口过程的消息队列。WM_INITMENU是程序的顶层菜单和弹出式菜单被激活前的一瞬间发送到窗口过程。 wParam是顶层菜单的句柄。WM_INMENUPOPUP是弹出式菜单被激活前的一瞬间发送到窗口过程的。wParam是弹出式菜单的句柄。LOWORD(lParam)是其在上一级菜单中的索引位。WM_CONTEXTMENU消息通知窗口用户单击了鼠标右键,并要求弹出浮动菜单。此消息的wParam是单击鼠标右键时所处窗口的句柄;lParam参数指明了消息产生时的鼠标位置(屏幕坐标),其中,低字节为水平坐标,高字节为竖向坐标。 菜单和菜单相关操作 通过资源编译器创建菜单资源很容易,用户只需为其窗键的菜单栏添加菜单项或者弹出式菜单,并给每个菜单项指定一个全局唯一的标识符(自定义或由编译器分配)以及菜单项标题。 1 菜单资源的加载 2 菜单的动态创建 3 菜单项的属性 4 插入和删除菜单项资源文件中的菜单的结构IDM_MYMENU1 MENU DISCARDABLE BEGIN POPUP 文件(&F) BEGIN MENUITEM 新建(&N)tCtrl+N, 100 MENUITEM 打开(&O).tCtrl+O, 101 MENUITEM 保存(&S).tCtrl+S, 102 MENUITEM SEPARATOR MENUITEM 文本模式(&T)tCtrl+T, 103 END POPUP 编辑(&E) BEGIN MENUITEM 撤销(&U)tCtrl+Z, 104 MENUITEM SEPARATOR ENDEND菜单的动态创建 HMENU CreateMenu(VOID);/创建一个空菜单HMENU CreatePopupMenu(VOID);/创建空的弹出式菜单。(1) AppendMenu 在指定菜单的末尾加入一新的菜单项,可以指定该菜单项的内容、外观和行为等属性。(2) InsertMenuItem 在菜单的指定位置处插入一新菜单项菜单项的属性(参考)菜单项的禁止或者激活状态菜单项的选中或者取消选中状态菜单项显示的内容和标识符值(1) GetMenuState 返回指定菜单项的当前状态(2) EnableMenuItem 改变菜单项的激活、禁止和灰化状态(3) CheckMenuItem 用于选中或者取消选中菜单项,默认的选中状态是在菜单项的左边做一复选框选中标记。(4) SetMenuItemInfo 通过设置MenuItemInfo结构,可以设置有关菜单项的所有状态、菜单项标题等信息。(5) GetMenuItemInfo 与函数SetMenuItemInfo对应,此函数用于获取菜单项相关的信息,如显示状态、选中状态、菜单项标题、标识符值等。插入和删除菜单项(参考)删除指定的菜单项十分容易:DeleteMenu(hSubMenu, IDM_FILE_EXIT, MF_BYCOMMAND);实现更复杂的菜单项(参考)1 位图菜单项hbmRed = LoadBitmap( hInst, MAKEINTRESOURCE (IDB_RED ) );hPopSub = CreatePopupMenu();AppendMenu(hPopSub,MFT_BITMAP,IDM_COLOR_RED,(LPCTSTR)hbmRed); 2 自定义选中标记的菜单项BOOL SetMenuItemBitmaps(HMENU hMenu,UINT uPosition, UINT uFlags, HBITMAP hBitmapUnchecked,HBITMAP hBitmapChecked);12.5.5 菜单显示例程MEMUDEMO.c12.6 快捷(加速)键资源加速键加速键经常的,为了避免来回地使用鼠标和对菜单的选择,提出了随时利用一个简单的键盘操作,以提高工作效率。12.6.4 加速(快捷)键表模板1 资源脚本文件中描述的快捷键IDR_MYACCELERATOR ACCELERATORS DISCARDABLE BEGIN E, IDM_DRAW_ELLIPSE, VIRTKEY, CONTROL, NOINVERT N, IDM_FILE_NEW, VIRTKEY, CONTROL, NOINVERT O, IDM_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT Q, IDM_FILE_EXIT, VIRTKEY, CONTROL, NOINVERT R, IDM_DRAW_RECT, VIRTKEY, CONTROL, NOINVERT S, IDM_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT T, IDM_FILE_TEXT, ASCII, NOINVERT D, IDM_FILE_DRAW, ASCII, NOINVERT Z, IDM_EDIT_UNDO, ASCII, NOINVERT X, IDM_EDIT_CUT, ASCII, NOINVERT C, IDM_EDIT_COPY, ASCII, NOINVERT V, IDM_EDIT_PASTE, ASCII, NOINVERTEND关键词关键词自定义一自定义一个名称或个名称或编号编号注 意 : 应 避 免 使 用注 意 : 应 避 免 使 用Tab,Enter,Esc,Spacebar键键12.6.1 加速键的资源2 加载和翻译快捷键 ,在主程序中加入HACCEL hAccel;.hAccel= LoadAccelerators(hInstance, “IDR_MYACCELERATOR”); while (GetMessage (&msg, NULL, 0, 0) if(!TranslateAccelerator(hwnd, hAccel, &msg) TranslateMessage (&msg) ; DispatchMessage (&msg) ;12.7 菜单和快捷键程序实例POPPAD2.C - 多加速键的使用 MenuDisplay.c - 演示各种菜单的创建和使用以及快捷键资源。函数SetWindowText用于重新设置窗口标题栏的标题。SetMenu(hwnd,hMenu);SetWindowText(hwnd,TEXT(“MenuDisplay文本模式”);

    注意事项

    本文(windows编程技术第12章-Windows中的资源.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开