设为首页 加入收藏

TOP

一、Windows的图标、光标、字符串和自订资源—将图标添加到程序
2012-11-05 12:33:48 】 浏览:497
Tags:Windows 图标 光标 字符串 资源 添加 程序

将资源添加到程序中需要Visual C++(www.cppentry.com) Developer Studio的一些附加功能。对于图示来说,可以使用「Image Editor」(也称为「Graphics Editor」)来绘制图标的图像。该图像被储存在扩展名为.ICO的图示文件中。Developer Studio还产生一个资源描述档(扩展名为.RC的文件,有时也称作资源定义文件),它列出了程序的所有资源和一个让程序引用资源的表头文件(RESOURCE.H)。

因此,您可以看到这些新文件是如何组织在一起的,让我们以建立名为ICONDEMO的新项目开始。像往常一样,在Developer Studio中从File菜单中选择New,然后依次选择 项目页面标签和Win32 Application。在Project Name栏中键入ICONDEMO并单击OK。这时,Developer Studio建立了用于支持工作区和项目的五个文件。这些文件包括文本文件ICONDEMO.DSW、ICONDEMO.DSP和ICONDEMO.MAK(假设当您从 Tools菜单选择Open后,在显示的 Open对话框中,从Build页面标签中选中 Export makefile when saving project file)。现在,让我们像通常那样所做的建立C原始码文件。从 File菜单上选择New,选择Files页面标签,并单击 C++(www.cppentry.com)Source File。在File Name栏中键入ICONDEMO.C并单击OK。此时,Developer Studio就建立了一个空的ICONDEMO.C文件。键入程序10-1中的程序,或选择 Insert菜单,然后选择File As Text选项,从本书附上的光盘中复制原始码。

程序10-1 ICONDEMO
        ICONDEMO.C        /*--------------------------------------------------------------------------            ICONDEMO.C --         Icon Demonstration Program                                                  (c) Charles Petzold, 1998        --------------------------------------------------------------------------*/        #include <windows.h>        #include "resource.h"        LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;        int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,                                                                 PSTR szCmdLine, int iCmdShow)        {                   TCHAR                         szAppName[]           = TEXT ("IconDemo") ;                   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 (hInstance, MAKEINTRESOURCE (IDI_ICON)) ;                   wndclass.hCursor                             = LoadCursor (NULL, IDC_ARROW) ;                   wndclass.hbrBackground               = GetStockObject (WHITE_BRUSH) ;                   wndclass.lpszMenuName                = NULL ;                   wndclass.lpszClassName               = szAppName ;                   if (!RegisterClass (&wndclass))                   {                         MessageBox (  NULL, TEXT ("This program requires Windows NT!"),                                                                               szAppName, MB_ICONERROR) ;                          return 0 ;            }                     hwnd = CreateWindow (szAppName, TEXT ("Icon Demo"),                          WS_OVERLAPPEDWINDOW,                          CW_USEDEFAULT, CW_USEDEFAULT,                          CW_USEDEFAULT, CW_USEDEFAULT,                         NULL, NULL, hInstance, NULL) ;                              ShowWindow (hwnd, iCmdShow) ;                   UpdateWindow (hwnd) ;                      while (GetMessage (&msg, NULL, 0, 0))                   {                          TranslateMessage (&msg) ;                          DispatchMessage (&msg) ;          }                   return msg.wParam ;        }        LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)        {                   static HICON hIcon ;                   static int   cxIcon, cyIcon, cxClient, cyClient ;                   HDC          hdc ;                   HINSTANCE    hInstance ;                   PAINTSTRUCT  ps ;                   int          x, y ;                              switch (message)                   {                   case   WM_CREATE :                          hInstance     = ((LPCREATESTRUCT) lParam)->hInstance ;                          hIcon         = LoadIcon (hInstance, MAKEINTRESOURCE (IDI_ICON)) ;                          cxIcon        = GetSystemMetrics (SM_CXICON) ;                         cyIcon        = GetSystemMetrics (SM_CYICON) ;                          return 0 ;                            case   WM_SIZE :                         cxClient              = LOWORD (lParam) ;                          cyClient              = HIWORD (lParam) ;                          return 0 ;            case   WM_PAINT :                          hdc = BeginPaint (hwnd, &ps) ;                                         for (y = 0 ; y < cyClient ; y += cyIcon)                                                 for (x = 0 ; x < cxClient ; x += cxIcon)                                                                 DrawIcon (hdc, x, y, hIcon) ;                                                                      EndPaint (hwnd, &ps) ;                                                 return 0 ;                                        case   WM_DESTROY :                          PostQuitMessage (0) ;                          return 0 ;                   }                   return DefWindowProc (hwnd, message, wParam, lParam) ;        }        
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一、Windows的图标、光标、字符串.. 下一篇一、Windows的图标、光标、字符串..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目