精华内容
下载资源
问答
  • 图标一个或多个位图组成的一个图片文件,文件后缀一般为.icon。一般来说会建立两个图标,一个大的,一个小的,或者只建立一个图标,包含多个位图。为什么这样做,因为如果只有一个图标的话,如果是小图标,那么...

    图标是由一个或多个位图组成的一个图片文件,文件后缀一般为.icon。一般来说会建立两个图标,一个大的,一个小的,或者只建立一个图标,包含多个位图。为什么这样做,因为如果只有一个图标的话,如果是小图标,那么程序文件的图标就会变很难看,如果是大图标,那么程序标题栏上显示的图标就有可能因为压缩而失真,所以,一般情况下应该建立两个图标,来应对不同的情况。

    接下来介绍一种简单的使用图标的方法,在注册窗口类的时候就设置图标。

    对于WNDCLASS窗口类来说,我们应该用由32*32和16*16的两个位图组成的图标来作为LoadIcon函数的参数,并将LoadIcon的返回值赋给WndClass.hIcon。程序会自动选择用

    对于WNDCLASSEX窗口类来说,我们应该用32*32的图标作为LoadIcon的参数。并将返回值赋给wcex.hIcon,16*16的图标作为LoadIcon的参数,并肩返回值赋给wcex.hIconSm

    然后单独说一下LoadIcon函数:

    HICON WINAPI LoadIcon(
      _In_opt_ HINSTANCE hInstance,
      _In_     LPCTSTR   lpIconName
    );
    
    

    第一个参数是当前模型的实例,这个实例是这个图标的加载对象。

    第二个参数是应当被加载的图标的名称。这个值有一些定义好的值如:IDI_APPLICATION 默认应用图标;IDI_ASTERISK 和信息图标一样;IDI_ERROR 手形状的图标;IDI_EXCLAMATION 和警告图标一样;IDI_HAND 手形状的图标,和IDI_ERROR一样;IDI_INFORMATION 信息图标;IDI_QUESTION 问题图标;IDI_SHIELD 安全护盾图标;IDI_WARNING 警告图标;IDI_WINLOGO windows2000 logo图标。

    当然你也可以自己创建图标,在VS2015下,打卡资源管理器,然后可以在ICON下新建一个图标ID,然后在解决方案资源管理器中打开新建的图标,注意VS2015不能绘画32的图标,只可以绘画24位以及24位一下的图标,然后调用LoadIcon函数时应该这么调用LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)),IDI_ICON是你自己建立的图标的ID。

    一般来说程序的图标应该作为资源被包括在程序中,而不是在运行时自行建立,我也同样不推荐在运行过程中建立图标,但是如何在运行中建立图标我还是要介绍一下的。

    你需要用到CreateIcon函数,原型如下:

    HICON WINAPI CreateIcon(
      _In_opt_       HINSTANCE hInstance,
      _In_           int       nWidth,
      _In_           int       nHeight,
      _In_           BYTE      cPlanes,
      _In_           BYTE      cBitsPixel,
      _In_     const BYTE      *lpbANDbits,
      _In_     const BYTE      *lpbXORbits
    );
    因为我不推荐所以我就不做详细的介绍了,然后附上一段MSDN中的代码,

    HICON hIcon3;      // icon handle 
     
    // Yang icon AND bitmask 
     
    BYTE ANDmaskIcon[] = {0xFF, 0xFF, 0xFF, 0xFF,   // line 1 
                          0xFF, 0xFF, 0xC3, 0xFF,   // line 2 
                          0xFF, 0xFF, 0x00, 0xFF,   // line 3 
                          0xFF, 0xFE, 0x00, 0x7F,   // line 4 
     
                          0xFF, 0xFC, 0x00, 0x1F,   // line 5 
                          0xFF, 0xF8, 0x00, 0x0F,   // line 6 
                          0xFF, 0xF8, 0x00, 0x0F,   // line 7 
                          0xFF, 0xF0, 0x00, 0x07,   // line 8 
     
                          0xFF, 0xF0, 0x00, 0x03,   // line 9 
                          0xFF, 0xE0, 0x00, 0x03,   // line 10 
                          0xFF, 0xE0, 0x00, 0x01,   // line 11 
                          0xFF, 0xE0, 0x00, 0x01,   // line 12 
     
                          0xFF, 0xF0, 0x00, 0x01,   // line 13 
                          0xFF, 0xF0, 0x00, 0x00,   // line 14 
                          0xFF, 0xF8, 0x00, 0x00,   // line 15 
                          0xFF, 0xFC, 0x00, 0x00,   // line 16 
     
                          0xFF, 0xFF, 0x00, 0x00,   // line 17 
                          0xFF, 0xFF, 0x80, 0x00,   // line 18 
                          0xFF, 0xFF, 0xE0, 0x00,   // line 19 
                          0xFF, 0xFF, 0xE0, 0x01,   // line 20 
     
                          0xFF, 0xFF, 0xF0, 0x01,   // line 21 
                          0xFF, 0xFF, 0xF0, 0x01,   // line 22 
                          0xFF, 0xFF, 0xF0, 0x03,   // line 23 
                          0xFF, 0xFF, 0xE0, 0x03,   // line 24 
     
                          0xFF, 0xFF, 0xE0, 0x07,   // line 25 
                          0xFF, 0xFF, 0xC0, 0x0F,   // line 26 
                          0xFF, 0xFF, 0xC0, 0x0F,   // line 27 
                          0xFF, 0xFF, 0x80, 0x1F,   // line 28 
     
                          0xFF, 0xFF, 0x00, 0x7F,   // line 29 
                          0xFF, 0xFC, 0x00, 0xFF,   // line 30 
                          0xFF, 0xF8, 0x03, 0xFF,   // line 31 
                          0xFF, 0xFC, 0x3F, 0xFF};  // line 32 
     
    // Yang icon XOR bitmask 
     
    BYTE XORmaskIcon[] = {0x00, 0x00, 0x00, 0x00,   // line 1 
                          0x00, 0x00, 0x00, 0x00,   // line 2 
                          0x00, 0x00, 0x00, 0x00,   // line 3 
                          0x00, 0x00, 0x00, 0x00,   // line 4 
     
                          0x00, 0x00, 0x00, 0x00,   // line 5 
                          0x00, 0x00, 0x00, 0x00,   // line 6 
                          0x00, 0x00, 0x00, 0x00,   // line 7 
                          0x00, 0x00, 0x38, 0x00,   // line 8 
     
                          0x00, 0x00, 0x7C, 0x00,   // line 9 
                          0x00, 0x00, 0x7C, 0x00,   // line 10 
                          0x00, 0x00, 0x7C, 0x00,   // line 11 
                          0x00, 0x00, 0x38, 0x00,   // line 12 
     
                          0x00, 0x00, 0x00, 0x00,   // line 13 
                          0x00, 0x00, 0x00, 0x00,   // line 14 
                          0x00, 0x00, 0x00, 0x00,   // line 15 
                          0x00, 0x00, 0x00, 0x00,   // line 16 
     
                          0x00, 0x00, 0x00, 0x00,   // line 17 
                          0x00, 0x00, 0x00, 0x00,   // line 18 
                          0x00, 0x00, 0x00, 0x00,   // line 19 
                          0x00, 0x00, 0x00, 0x00,   // line 20 
     
                          0x00, 0x00, 0x00, 0x00,   // line 21 
                          0x00, 0x00, 0x00, 0x00,   // line 22 
                          0x00, 0x00, 0x00, 0x00,   // line 23 
                          0x00, 0x00, 0x00, 0x00,   // line 24 
     
                          0x00, 0x00, 0x00, 0x00,   // line 25 
                          0x00, 0x00, 0x00, 0x00,   // line 26 
                          0x00, 0x00, 0x00, 0x00,   // line 27 
                          0x00, 0x00, 0x00, 0x00,   // line 28 
     
                          0x00, 0x00, 0x00, 0x00,   // line 29 
                          0x00, 0x00, 0x00, 0x00,   // line 30 
                          0x00, 0x00, 0x00, 0x00,   // line 31 
                          0x00, 0x00, 0x00, 0x00};  // line 32 
     
    hIcon3 = CreateIcon(hinst,    // application instance  
                 32,              // icon width 
                 32,              // icon height 
                 1,               // number of XOR planes 
                 1,               // number of bits per pixel 
                 ANDmaskIcon,     // AND bitmask  
                 XORmaskIcon);    // XOR bitmask
    

    感兴趣的朋友可以自己查阅其他资料来学习这部分知识。

    还有一个函数可以在用户区域上绘画图标,那就是

    DrawIcon(
        _In_ HDC hDC,
        _In_ int X,
        _In_ int Y,
        _In_ HICON hIcon);
    这四个参数相信大家应该很清楚,所以我就不介绍了。不过这个函数一般用的不是很多。



    展开全文
  • windows 程序设计

    2012-03-07 15:25:21
    一般而言,Windows API自Windows 1.0以来一直保持一致,没什么重大改变。具有Windows 98程序写作经验的Windows程序写作者会对Windows 1.0程序的原始码感觉非常熟悉。API改变的一种方式是进行增强。Windows 1.0支持不...
  • Visual C++ 6.0.rar

    2010-09-26 02:33:48
    4.2.6 Windows应用程序组成 4.3Windows98应用程序接口(API) 4.3.1 什么是API 4.3.2Win32API 4.4Windows98应用程序基础 4.4.1 WinMain() 4.4.2 窗口函数 4.4.3 窗口类 4.4.4 消息循环 4.4.5Windows数据类型...
  • 如何让工具条显示256色图像

    千次阅读 2011-02-26 17:47:00
    问题: 论坛中有很多人提出:基于Windows的程序如资源管理器(Explorer.exe),IE等都能显示出漂亮的工具栏...它是一个许多小图像组成的长条型位图图像。如图一所示: 图一假设你有7个20x20的图标,则在图像

    问题:
       论坛中有很多人提出:基于Windows的程序如资源管理器(Explorer.exe),IE等都能显示出漂亮的工具栏图像和图标。但是,用MFC开发的应用程序一般都只能显示16色的工具栏图像和列表视图(如CListView)图像,而无法显示在资源中创建的256色图标和位图。这是为什么?
    解答:
       工具栏和列表视图都是把自己的图像存储在图像列表中。这个图像列表实际上就是一个图像清单。它是一个由许多小图像组成的长条型位图图像。如图一所示:
          图一
    假设你有7个20x20的图标,则在图像清单中会将它们保存为一个140x20的位图(7x20=140)。你可以根据需要来调整这个位图的颜色特性;但是必须在创建图像清单时指出要使用多少种颜色。在缺省情况下是16色。另外,当MFC加载工具栏位图时使用的一个内部函数,AfxLoadSysColorBitmap,也假设颜色为16色。所以用MFC编程时,为了显示256色图像,你必须要对图像清单进行处理。
    我编写了DEMO程序TBColor来说明如何在工具栏中显示256色图像,这个程序是一个极其典型的MFC程序——它有一个漂亮的工具栏。如图二所示:
    图二
    按下工具栏的每一个按钮都弹出“关于”对话框。具体处理细节全都在CMainFrame::OnCreate函数中实现:
    MainFrm.cpp 
    
    // Set tabsize = 3 in your editor.
    //
    #include "StdAfx.h"
    #include "MainFrm.h"
    #include "Resource.h"
    
    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
        ON_WM_CREATE()
    END_MESSAGE_MAP()
    
    static UINT indicators[] = {
        ID_SEPARATOR,           // status line indicator
        ID_INDICATOR_CAPS,
        ID_INDICATOR_NUM,
        ID_INDICATOR_SCRL,
    };
    
    CMainFrame::CMainFrame()
    {
    }
    
    CMainFrame::~CMainFrame()
    {
    }
    
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
        cs.style |= WS_CLIPCHILDREN;
        return CFrameWnd::PreCreateWindow(cs);
    }
    
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        VERIFY(CFrameWnd::OnCreate(lpCreateStruct)==0);
        
        //创建并加载工具栏
        //
        VERIFY(m_wndToolBar.Create(this));
        VERIFY(m_wndToolBar.LoadToolBar(IDR_MAINFRAME));
    
        // 加载工具栏位图 - 必须使用::LoadImage映射颜色
        // 将(192,192,192) 映射到 COLOR_3DFACE.
        //
        HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
            MAKEINTRESOURCE(IDR_MAINFRAME),
            IMAGE_BITMAP,
            0,0, // cx,cy
            LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );
        CBitmap bm;
        bm.Attach(hbm);
    
        // 创建图像清单并设置工具栏
        // 256色图像必须使用ILC_COLOR8!
        //
        m_ilToolBar.Create(20,20, ILC_COLOR8, 4, 4);
        m_ilToolBar.Add(&bm,(CBitmap*)NULL);
        m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar);
    
        VERIFY(m_wndStatusBar.Create(this));
        VERIFY(m_wndStatusBar.SetIndicators(indicators,
              sizeof(indicators)/sizeof(UINT)));
    
        VERIFY(m_wndView.Create(_T("Press a button, any button."),
            WS_VISIBLE|WS_CHILD|SS_CENTERIMAGE|SS_CENTER,
            CRect(0,0,0,0), this, AFX_IDW_PANE_FIRST));
    
        return 0;
    }
    
    第一步一定要用::LoadImage加载工具栏位图。这个函数是个多用途函数,它可以加载光标、图标和位图。加载位图时,这个函数甚至还能将位图中的某些颜色映射到当前的屏幕颜色。例如,DEMO程序中的工具栏位图(图一)使用RGB(192,192,192)为背景;如果恰好系统上有3D颜色,则LR_LOADMAP3DCOLORS标志会让LoadImage将背景映射到系统实际的3D(GetSysColor(COLOR_3DFACE))颜色。
    HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDR_MAINFRAME),
    IMAGE_BITMAP,
    0,0, // cx, cy
    LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );
    LoadImage返回一个位图句柄(HBITMAP),但MFC会更喜欢与CBitmaps打交道,所以接下来就是创建一个CBitmap对象并将它与你的句柄联系(Attach)起来。
    CBitmap bm;
    bm.Attach(hbm);

    现在有了CBitmap对象,你就可以从它那儿创建新的图像清单了。

    m_ilToolBar.Create(20,20,ILC_COLOR8,4,4);
    m_ilToolBar.Add(&bm,(CBitmap*)NULL);

       m_ilToolBar是个CMainFrame成员,ILC_COLOR8是个神奇的标志,它创建一个8位颜色的调色板位图——既256色的位图。如果你愿意,它甚至能创建24位颜色的位图——但是要记住LR_LOADMAP3DCOLORS只能和调色板位图一起使用。最后一步是将新创建的图像清单用于工具栏。这一步很重要,千万不要忘记!

    m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar);

       在工具栏中使用256色图像就这么简单。这种技术同样可以用于列表视图中的图像以及rebars和其它使用图像清单的控制。赶快试一下吧!

    转自http://www.vckbase.com/document/viewdoc/?id=241

    展开全文
  • “控制面板”和“打印机”是Windows98系统配置的一个重要组成部分,为了避免让别人随便修改,可以将“设置”菜单中的“控制面板”和“打印机”选项禁用。 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\...
  • 会计理论考试题

    2012-03-07 21:04:40
    8.在Windows98中,图标不可以代表___D____。 A、程序 B、文件 C、文件夹 D、打印机信息 9.计算机病毒是指__D____。 A、生物病毒 B、细菌 C、被损坏的程序 D、特制的小程序 10.文字处理系统是一种 __C__ 。 A、系统...
  • IoF(Impression of Font)

    2014-10-25 22:00:57
     所以在Windows下需要借助第三方的字体渲染程序,一般这些程序都是基于开源的FreeType技术,目前比较主流的是MacType(其前身是GDI++项目,后FlyingSnow进行了大量的BugFix、性能优化、功能和人机界面完善等工作...
  • 4、问:在三台电脑组成的局域网中,我在其中一台电脑上用过Windows优化大师后,为什么这台电脑就不能登录网络,并且还提示找不到拨号适配器? 18 5、问:如何在局域网中设置QQ、ICQ等即时通讯软件? 18 6、问:我...
  • 多媒体教室

    2013-06-14 08:10:31
    多媒体网络教室教师机、学生机、路由器软件所组成,具体功能为: 教师机:广播教学、语音教学、语音对讲、学生演示、监控转播、屏幕录制、屏幕回放、黑屏肃静、网络影院、文件分发、电子教鞭、班级模型、系统设置...
  • 通常由Windows用于标识禁止状态 PolyTextOut 描绘一系列字串 RemoveFontResource 从Windows系统中删除一种字体资源 SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 ...
  • C++MFC教程

    热门讨论 2013-05-21 13:37:15
    1、消息的组成:一个消息一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高...
  •  PsTools是Sysinternals公司推出的一个功能强大的远程管理工具包,一共12个命令组成,可以用来远程管理Windows NT/2000/XP系统。可以远程整理硬盘、关闭远程计算机上运行的信使服务、查看服务器硬盘空间、查看...
  • TortoiseSVN

    2009-11-28 19:31:36
    这样就造成了你的Working Copy不同的Revision文件所组成 (Revision24的a.txt文件和Revision26的b.txt文件)。 前面说过在提交修改前必须保证你是在文件的最新版本基础上修改, 如果在这种混合版本的情况下, ...
  • 针式PKM主要主界面和知识点 两个画面组成, 主界面粗看上像很杂,实际上分作有规律的几块,是为了帮助您更快的完成日常操作。 可以先看看帮助视频,然后随便操作看看 。 3.2 第二步:导入本机上现有的文件 ...
  • 针式PKM主要主界面和知识点 两个画面组成, 主界面粗看上像很杂,实际上分作有规律的几块,是为了帮助您更快的完成日常操作。 可以先看看帮助视频,然后随便操作看看 。 3.2 第二步:导入本机上现有的文件 ...
  • 针式PKM主要主界面和知识点 两个画面组成, 主界面粗看上像很杂,实际上分作有规律的几块,是为了帮助您更快的完成日常操作。 可以先看看帮助视频,然后随便操作看看 。 3.2 第二步:导入本机上现有的文件 ...
  • 后面是IDE设备的类型和硬件参数,TYPE用来说明硬盘设备的类型,我们可以选择AUTO、USER、NONE的工作模式,AUTO是系统自己检测硬盘类型,在系统中存储了1-45类硬盘参数,在使用该设置值时不必再设置其它参数;...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    各种建模元素的规格说明所组成 规格说明 模型元素的特征和语义的文本描述—模型的“肉” 形成了承载模型的语义背板,赋予模型意义,各种图仅仅是该背板的视图或者可视化投影 修饰 修饰:图中建模元素上暴露的信息项 ...
  • LDAP协议规范表明,一个活动目录对象可以一系列域组件、OU和普通名字来代表,它们组成了活动目录中的命名路径。LDAP命名的路径是用来访问活动目录对象的,它包括了下面的两类:% T* B4 E: k( {8 ^ 9 U& n1 d0 J; Q...
  •  ◇功能菜单:WinHex 的菜单栏八个菜单组成,分别是:文件、编辑、查找、位置、工具、选项、文件管理器、窗口和帮助。所有的功能都已经包含在里面了。在文件菜单里面包含的是新建、打开文件和保存以及退出命令,...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET的第一语言 本书着重介绍语言本身,比较少涉及应用,不错的入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代...
  • 中文版Excel.2007图表宝典 1/2

    热门讨论 2012-04-06 18:49:24
    1.3 图表的组成部分/9 1.4 创建图表的基本步骤/11 1.4.1 创建图表/11 1.4.2 切换行和列的方向/12 1.4.3 改变图表类型/13 1.4.4 应用图表布局/14 1.4.5 应用图表样式/15 1.4.6 添加和删除图表元素/15 1.4.7 格式化...
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
    1.3 图表的组成部分/9 1.4 创建图表的基本步骤/11 1.4.1 创建图表/11 1.4.2 切换行和列的方向/12 1.4.3 改变图表类型/13 1.4.4 应用图表布局/14 1.4.5 应用图表样式/15 1.4.6 添加和删除图表元素/15 1.4.7 格式化...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    什么是开放手机联盟? 开放手机联盟, Open Handset Alliance :是美国 Google 公司与 2007 年 11 月 5 日宣布组建的一个全球性的联 盟组织。这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,...
  • 每个类都是独立的一个.h头文件和.cpp实现文件组成,零耦合,不依赖其他文件,方便单个控件独立出来以源码形式集成到项目中,方便直观。 控件数量远超其他第三方控件库比如qwt集成的控件数量,使用方式也比其简单友好...
  • oracle的框架主要物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

windows图标由什么组成