如何换去标题栏上的系统菜单图标? AfxGetApp()->LoadIcon(YOUR_ICON_ID); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是外部应用程序首先FindWindow()找到窗口用SendMessage()修改窗口Icon如果是自身,在RES里面将其改掉 向窗口发送 WM_SECTION消息。 HICON hIcon=AfxGetApp()->LoadIcon(IDI_YOUR_ICON) AfxGetMainWnd()->SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon) 如果是外部应用程序首先FindWindow()找到窗口用SendMessage()修改窗口Icon------------------------------ 具体怎样实现?如果是自身,在RES里面将其改掉 随心所欲改变窗口的图标 苏州市西塘南巷 沈建新 ---- 在使用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 handlersvoid 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程序的子框架窗口的图标,有兴趣的朋友可以一试。 Tab控件问题 接收邮件,支持自定义端口,SSL连接 怎么将lib文件编译成dll文件 序列化了,为什么还是不能保存——————? 关于access97数据库 请问函数AfxFindResourceHandle()?? 在2K系统中,为什么不能自动断电关机?ExitWindowsEX函数只有FORCE,LOGOFF起作用,其余的无效 一个字符串表示的16进制的数,怎么把它放入DWORD中。 java与mfc之间使用udp进行通信 关于CFile::GetPositon() 的问题 不是高手不要看 怪!怪!怪!请教各路豪侠!!!!!关于使用ADO打开数据库的问题??
用SendMessage()修改窗口Icon如果是自身,在RES里面将其改掉
HICON hIcon=AfxGetApp()->LoadIcon(IDI_YOUR_ICON)
AfxGetMainWnd()->SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon)
用SendMessage()修改窗口Icon
------------------------------
具体怎样实现?如果是自身,在RES里面将其改掉
苏州市西塘南巷
沈建新
---- 在使用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程序的子框架窗口的图标,有兴趣的朋友可以一试。