分享
 
 
 

随心所欲改变窗口的图标

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

随心所欲改变窗口的图标

苏州市西塘南巷

沈建新

---- 在使用VC++5.0开发应用程序时,我们可能需要改变框架窗口(包括主框架窗口和子框架窗口)的图标,而不是使用VC为你已经准备好了的、很难看的那个图标。但笔者参考了很多书籍、资料,却没有找到任何叙述如何去改变窗口图标的方法的文章(或许很多人认为这根本就不值得一提),让很多初学者无从着手。笔者经过实践,发现了以下两个改变框架窗口图标的方法。使用方法一可以在编写应用程序时指定框架窗口的图标,使用方法二可以在程序运行时根据需要动态地改变窗口的图标。如果把这两个方法结合起来,就可以随心所欲改变窗口的图标。

---- 方法一、在编程时指定窗口的图标

---- 一、如果是指定主框架窗口的图标,其步骤如下:

创建或打开工程Icon(以下都以工程名为Icon为例)。

单击Workspace窗口的ResourceView标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉。注意:一定要把它删除才行。

从Developer Studio的Insert菜单中选择Resource,然后选择Icon,新建(New)一个新的图标或导入(Import)一个已有的图标。

把新图标的资源ID改为AFX_IDI_STD_MDIFRAME(如果是MDI应用程序)或改为AFX_IDI_STD_FRAME(如果是SDI应用程序)。AFX_IDI_STD_MDIFRAME和AFX_IDI_STD_FRAME这两个资源ID是MFC中预定义了的。

编译并运行程序,可以发现主框架窗口的图标就是你指定的图标。

---- 二、如果是指定MDI子框架窗口的图标,其步骤与上述相似。

同上。创建或打开工程Icon。

删除资源ID为IDR_ICONTYPE(在你的工程中应该是IDR_XXXTYPE,其中XXX为你的工程名)图标资源。同样要注意的是:一定要把它删除才行。

同上。新建(New)一个新的图标或导入(Import)一个已有的图标。

把新图标的资源ID改为IDR_ICONTYPE(即步骤2中删除的资源ID)。

编译并运行程序,可以发现子框架窗口的图标就是你指定的图标。

---- 用这个方法,可以在多视图类MDI应用程序中为不同视图的子框架窗口指定不同的图标。

---- 方法二、在程序运行时动态地改变窗口的图标

---- 在程序运行时动态地改变框架窗口图标的原理是使用函数

---- CWnd::SendMessage()向窗口发送WM_SETICON消息。其方法是:

HICON hIcon=AfxGetApp()- >LoadIcon(IDI_ICON1);

ASSERT(hIcon);

AfxGetMainWnd()- >SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

---- 以上叙述中的AfxGetMainWnd()是获得主框架窗口的窗口句柄,所以改变的是主框架窗口(包括MDI和SDI)的图标,用同样的方法略作改动就可以改变MDI应用程序子框架窗口的图标。

---- 下面举一个实例来说明如何改变主框架窗口的图标,步骤如下:

---- 1.创建或打开工程Icon。

---- 2. 从Developer Studio的Insert菜单中选择Ressource,然后选择Icon,新建(New)或导入(Import)两个图标,并资源ID分别改为IDI_ICON_GREEN,IDI_ICON_RED。

---- 3.单击Workspace窗口的ResourceView标签,对IDR_MAINFRAME菜单资源进行编辑。在View菜单中加入一个分隔符和Green Icon、Red Icon两个菜单项。其资源ID分别改为ID_VIEW_GREEN和ID_VIEW_RED。

---- 4.为主窗口添加如下消息处理函数:

// CMainFrame message handlers

void CMainFrame::OnViewGreen()

{

// TODO: Add your command handler code here

HICON hIcon=AfxGetApp()- >LoadIcon(IDI_ICON_GREEN);

ASSERT(hIcon);

SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

//因为是在类CmainFrame中,所以不需要用

AfxGetMainWnd()- >SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

}

void CMainFrame::OnViewRed()

{

// TODO: Add your command handler code here

HICON hIcon=AfxGetApp()- >LoadIcon(IDI_ICON_RED);

ASSERT(hIcon);

SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

}

---- 5. 最后编译并执行程序,执行View菜单的Green Icon和Red Icon,可以看到成功得改变主框架窗口的图标。

---- 以上实例是在程序运行时改变主框架窗口的图标,可以用同样的方法改变MDI程序的子框架窗口的图标,有兴趣的朋友可以一试。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有