VC6.0程序编译后如何为程序添加图标

VC6.0程序编译后如何为程序添加图标
我说的不是系统托盘图标,是显示程序时显示的图标

是不是显示程序的图标,在程序创建的时候就要创建图标,编译后不能再加载图标了,不过你可以修改
在Windows操作系统中,任务栏的右边(托盘)会常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到具有托盘图标的软件,如金山词霸、实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志,必要时我们可以通过用鼠标点击图标对其进行选单操作或激活其主窗口。有时我们自己编写的程序也希望有类似的效果,本文将详细地介绍用VC设计托盘图标程序的方法。

一、NOTIFYICONDATA结构

NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。其定义为:

typedef struct—NOTIFYICONDATA { DWORD cbSize; //以字节为单位的这个结构的大小 HWND hWnd; //接收托盘图标通知消息的窗口句柄 UINT uID; //应用程序定义的该图标的ID号 UINT uFlags; //设置该图标的属性 UINT uCallbackMessage; //应用程序定义的消息ID号,此消息传递给hWnd HICON hIcon; //图标的句柄 char szTip[64]; //鼠标停留在图标上显示的提示信息 } NOTIFYICONDATA, ?PNOTIFYICONDATA;

该结构中,成员uFlags可以是下列的组合或其中之一:

◆NIF_ICON:设置成员hIcon有效

◆NIF_MESSAGE:设置成员uCallbackMessage有效

◆NIF_TIP:设置成员szTip有效

二、Shell_NotifyIcon函数

全局函数Shell_NotifyIcon()用于在托盘上增加、删除或修改图标。其原型为:

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA pnid);

Pnid是上面的NOTIFYICONDATA结构的指针。

dwMessage是被传递的消息,可以是以下消息之一:

◆NIM_ADD:增加图标

◆NIM_DELETE:删除图标

◆NIM_MODIFY:修改图标

三、托盘图标程序设计示例

首先我们用AppWizard创建一个不基于文档和视图结构的应用程序Tray。我们并不想在应用程序启动时显示主窗口,所以需要删除应用程序类CTrayApp中成员函数InitInstance()的以下两句代码:

pFrame-〉ActivateFrame(); pFrame-〉ShowWindow(SW_SHOW);

在CMainFrame类中加入NOTIFYICONDATA结构的保护成员变量m_tnid,并在其OnCreate函数中return语句前加入生成托盘图标的代码:

m_tnid.cbSize=sizeof(NOTIFYICONDATA); m_tnid.hWnd=this-〉m_hWnd; m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; m_tnid.uCallbackMessage=MYWM_NOTIFYICON; //用户定义的回调消息 CString szToolTip; szToolTip=_T("托盘图标实例"); _tcscpy(m_tnid.szTip, szToolTip); m_tnid.uID=IDR_MAINFRAME; HICON hIcon; hIcon=AfxGetApp()-〉LoadIcon(IDR_MAINFRAME); m_tnid.hIcon=hIcon; ::Shell_NotifyIcon(NIM_ADD,&&m_tnid); if(hIcon)::DestroyIcon(hIcon);

返回消息的ID应在主框架类的头函数中定义:

#define MYWM_NOTIFYICON WM_USER+1

为了处理图标返回消息,如鼠标左键双击、鼠标右键单击消息,我们重载WindowProc()函数。此外,我们还希望在主框架窗口最小化时图标不在任务栏的空白区出现,在此函数中同时作相应处理。

LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message){ case MYWM_NOTIFYICON: //如果是用户定义的消息 if(lParam==WM_LBUTTONDBLCLK){ //鼠标双击时主窗口出现 AfxGetApp()-〉m_pMainWnd-〉ShowWindow(SW_SHOW); } else if(lParam==WM_RBUTTONDOWN){ //鼠标右键单击弹出选单 CMenu menu; menu.LoadMenu(IDR_RIGHT_MENU); //载入事先定义的选单 CMenu?pMenu=menu.GetSubMenu(0); CPoint pos; GetCursorPos(&&pos); pMenu-〉TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd()); } break; case WM_SYSCOMMAND: //如果是系统消息 if(wParam= =SC_MINIMIZE){ //接收到最小化消息时主窗口隐藏 AfxGetApp()-〉m_pMainWnd-〉ShowWindow(SW_HIDE); return 0; } break; } return CFrameWnd::WindowProc(message, wParam, lParam); }

为使应用程序退出时图标消失,映射WM_DESTROY消息,在OnDestroy()函数中加入:

::Shell_NotifyIcon(NIM_DELETE,&&m_tnid);

至此,托盘图标程序的常规功能我们均已实现。我们还可以通过Shell_NotifyIcon()函数的调用实现不同状态下图标的改变
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-19
可以用PE相关的工具加。不知道本来就没有图标的会不会破坏PE结构。

为自制的C\/C++程序exe添加图标
打开VC6.0,点击文件--打开,打开对话框,选择自己已经编写好的C或C++源程序打开。打开源程序后,点击组建--编译,编译成功后,点击插入--资源,打开插入资源对话框。选择资源类型为Icon,单击右侧的“引入”按钮,打开引入资源对话框,选择你制作或下载的Icon图标引入。引入图标资源后,进入以下界面,单击...

C语言(VC++ 6.0 )生成的exe程序怎么样让它有图标?
首先准备好自己应用程序的图标,如果没有也没关系,自己在VC里画一个就是。步骤如下:菜单:Insert-->Resource,打开插入资源对话框,在下面选择Icon,之后,你可以点New新建一个图标,也可以点Import插入一个,不管你是新建的还是插入的,你都可以对图标进行编辑。编辑好图标之后,点保存,一般情况下会弹出...

VC6.0程序编译后如何为程序添加图标
首先我们用AppWizard创建一个不基于文档和视图结构的应用程序Tray。我们并不想在应用程序启动时显示主窗口,所以需要删除应用程序类CTrayApp中成员函数InitInstance()的以下两句代码:pFrame-〉ActivateFrame(); pFrame-〉ShowWindow(SW_SHOW);在CMainFrame类中加入NOTIFYICONDATA结构的保护成员变量m_tnid,并在...

用VC6.0编译出来的c语言.exe文件怎么加图标?
用res hacker或者exescope来加,打开EXE文件,图标那一栏就是了。或者直接搜索EXE图标修改器之类的软件,更傻瓜一些

vc6.0添加一个图标文件到resource files怎么用他作为程序图标
点击插入按钮,在弹出的菜单中点击bitmap,就可以看到你的图标文件了。保存起来。 点击File View,右键单击“xxx files",xxx是你的工程名,在弹出的菜单中点添加文件到工程,接着添加图标文件到工程,编译链接就行了

用vc++6.0编译成的c语言程序,如何给这个exe文件换一个图标啊?求详细步...
工程目录下,res文件夹中,把那个.ico文件用另外一个同名的图标文件覆盖就行了,这是最简单的。要不就要把你的图标文件导入工程,然后把m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME)这一句的ID改成你导入的图标的ID就行了

Vc 6.0的编译 连接和运行图标不见了 怎么能让它们出来?
在工具里面-》定制-》工具栏-》bulid minibar勾上就有了

vc++6.0怎么用
0是微软推出的C语言和C++语言的编译器,可以用来编写c\/c++程序(Windows程序,或者DLL,或者后台服务扩展,等等)。但是,注意,VC++6.0与C++标准略有区别。推荐直接使用VC++2010及以上版本,这些是比较符合C++标准的。如果非要用,建议去百度上搜一下VC++6.0入门的电子书,看一看就差不错了。

我用VC++6.0编好的程序,图标变成这样是什么原因,求大神解决?
解决方法(xp系统下):打开 任意文件夹 点击 工具菜单 的 文件夹选项 弹出文件夹选项对话框 点击 文件类型 在已注册的文件类型 中找找有没有cpp 选中它(没有就点新建)选中之后点击 高级 弹出编辑文件类型对话框 点击更改图标 弹出更改图标对话框 点击浏览 找到你的vc的msdev.exe打开它...就可以选...

vc++6.0怎么用
1.建工程 new->选择标签projects->在project name中填写你的工程名(例如myproject)->双击win32 console Application->选择一个空的工程->finish->ok 2.见文件 new->files->add to project选中在file 中输入文件名(注意:用C语言写文件明后要加.c例如文件名myfile.c,C++写就不需要直接就myfile...

相似回答
大家正在搜