当前位置: 代码迷 >> Solaris >> DEVCPP的托盘图标运作
  详细解决方案

DEVCPP的托盘图标运作

热度:3381   发布时间:2013-02-26 00:00:00.0
DEVCPP的托盘图标运行
我用DEVCPP在WINDOWS下编程,然后在SOLARIS下编译\运行,现想用的托盘图标方式运行程序,不知怎样写,那位朋友给指点一下,谢谢!
------解决方案--------------------------------------------------------
BOOL Shell_NotifyIcon(
    DWORD dwMessage, 
    PNOTIFYICONDATA pnid
);      

第一个参数dwMessage类型为DWORD,表示要进行的动作,它可以是下面的值之一:

      NIM_ADD:       添加一个图标到任务栏。
      NIM_MODIFY:    修改状态栏区域的图标。
      NIM_DELETE:    删除状态栏区域的图标。
      NIM_SETFOCUS:  将焦点返回到任务栏通知区域。当完成用户界面操作时,任务栏图标必须用此消息。例如,如果任务栏图标正     
                      显示上下文菜单,但用户按下"ESCAPE"键取消操作,这时就必须用此消息将焦点返回到任务栏通知区域。 
      NIM_SETVERSION:指示任务栏按照相应的动态库版本工作。      

第二个参数pnid是NOTIFYICONDATA结构的地址,其内容视dwMessage的值而定。这个结构在SHELLAPI.H文件中定义如下:

typedef struct _NOTIFYICONDATA {
  DWORD cbSize;           // 结构大小(sizeof struct),必须设置
  HWND hWnd;             // 发送通知消息的窗口句柄
  UINT uID;                //  图标ID ( 由回调函数的WPARAM 指定)
  UINT uFlags;            
  UINT uCallbackMessage;    // 消息被发送到此窗口过程
  HICON hIcon;             // 图标句柄
  CHAR szTip[64];          // 提示文本
} NOTIFYICONDATA;
uFlags的值:
#define NIF_MESSAGE 0x1   // 表示uCallbackMessage 有效
#define NIF_ICON    0x2   // 表示hIcon 有效
#define NIF_TIP     0x4   // 表示szTip 有效      

有关Shell_NotifyIcon函数的详细使用细节请参考MSDN。
    NOTIFYICONDATA结构中的 hWnd 是"拥有" 图标的窗口句柄。uID可以是任何标示托盘图标的ID(如果有多个图标),一般使用资源ID。HIcon可以是任何图标的句柄,包括预定义的系统图标,如 IDI_HAND、IDI_QUESTION、IDI_EXCLAMATION、或者Windows的徽标IDI_WINLOGO。
    图标的显示并不难,关键是事件的处理。当用户将鼠标移到图标上或者在图标上单击鼠标时,为了得到通知消息,你可以将自己的消息ID赋给uCallbackMessage,并设置 NIF_MESSAGE标志。当用户在图标上移动或单击鼠标时,Windows将用hWnd指定的窗口句柄调用你建立的窗口过程;消息ID在 uCallbackMessage中指定,uID的值即为wParam,lParam为鼠标事件,如WM_LBUTTONDOWN等。
------解决方案--------------------------------------------------------
应该不可以运行吧,大家好像没看清楚LZ的意思。
SOALRIS 没用过,楼主好像不是用VC呀,是不是换个版问一问吧,
------解决方案--------------------------------------------------------
在unix的安装中是可以使用托盘的,比如飞鸽传书的最新版本在安装脚本中就可以使用托盘,
建议lz下载一下飞鸽传书的源码,看看他是如何实现托盘图标的,
如果找不到的话,留下邮箱我给你发一份。