to sam1111(我倒):
从哪条消息里得到“发送此消息的图标ID”;
如何取得ID?
从哪条消息里得到“发送此消息的图标ID”;
如何取得ID?
解决方案 »
- 如何能够使用send发送CString类啊.急 !!!!
- 在vc中怎样获得MDI子窗体(CFromView)的当前窗体位置
- CSplitterWnd如何把边框去掉?
- 请教一个VC基础问题,实在不行了,已经郁闷几天了
- 一个奇怪的问题(release版本问题)
- 已经包含了"winsock.h",在链接时为什么还是找不到?
- ADO的一段代码,各位高手看看我是哪写错了
- 怎样解释运行 javascript,有没有现成的javascript 解释器可以用?
- 如何使用控件TOOLBAR和IMAGELIST?
- #pragma pack(<[push ¦ pop],[identifier]>,[n]) 的用处是什么,什么地方用?
- ttzzgg_80713(求知),怎么了,给我发啊!
- 如何在数据库中存取图形?
UINT nID = (UINT)wParam;
lParam代的是具体的鼠标事件,如左键单击等
WM_LBUTTONDOWN?
我试过了,但是没有成功。
你至少还能试试,怎么试呀?
当鼠标放在某个图标上时候,会有Tip提示显示,
从这些方面考虑是不是有什么办法呢?
至于图标的ToolTip是在NOTIFYICON结构中定义的。
我目前能够将图标隐藏并恢复,但请大家帮个忙,谁有activeskin3.52或3.55的解密版本,要没有一点问题的!我马上就贴代码.
#if !defined(AFX_TRAYTOOLBAR_H__615A398F_767F_4A49_B968_C19E1254E9AD__INCLUDED_)
#define AFX_TRAYTOOLBAR_H__615A398F_767F_4A49_B968_C19E1254E9AD__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TrayToolBar.h : header file
///////////////////////////////////////////////////////////////////////////////
// CTrayToolBar window
//没办法,只好采用最傻的办法了.
#define ICON_MAX 1024class CTrayToolBar : private CToolBarCtrl
{
// Construction
public:
CTrayToolBar();// Attributes
public:// Operations
public:// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTrayToolBar)
//}}AFX_VIRTUAL// Implementation
public:
int GetCount();
void DeleteIcon(int index);
void Refresh();
void HideAll();
void ShowIcon(int index,BOOL bShow );
void ShowAll();
HWND m_handle;
virtual ~CTrayToolBar(); // Generated message map functions
protected:
//{{AFX_MSG(CTrayToolBar)
//}}AFX_MSG DECLARE_MESSAGE_MAP()
};///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_TRAYTOOLBAR_H__615A398F_767F_4A49_B968_C19E1254E9AD__INCLUDED_)
// TrayToolBar.cpp : implementation file
//#include "stdafx.h"
#include "hideQQ.h"
#include "TrayToolBar.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CTrayToolBarCTrayToolBar::CTrayToolBar()
{
if(m_handle = ::FindWindow("Shell_TrayWnd",NULL)) if(m_handle = FindWindowEx(m_handle,NULL,"TrayNotifyWnd",NULL))
if(m_handle = FindWindowEx(m_handle,NULL,"ToolbarWindow32",NULL))
if(m_handle)
this->Attach(m_handle);
else
m_handle = NULL;}CTrayToolBar::~CTrayToolBar()
{
this->Detach();
}
BEGIN_MESSAGE_MAP(CTrayToolBar, CToolBarCtrl)
//{{AFX_MSG_MAP(CTrayToolBar)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CTrayToolBar message handlersvoid CTrayToolBar::ShowAll()
{
if(!m_handle) {AfxMessageBox("获取system tray失败!"); return;} int i = 0;
while(i < ICON_MAX )
{
this->ShowIcon(i,TRUE);
i++;
} Refresh();}void CTrayToolBar::ShowIcon(int index ,BOOL bShow)
{
if(!m_handle) {AfxMessageBox("获取system tray失败!"); return;}
//本来这里可以通过index来获得 nID,但是虽然函数成功,但idCommand却是错误的
/*
TBBUTTON * ptbbtn= new TBBUTTON;
this->SendMessage(TB_GETBUTTON,(WPARAM) index,(LPARAM) ptbbtn);
*/
if(bShow)
this->PostMessage(TB_HIDEBUTTON, index ,(LPARAM) MAKELONG(FALSE, 0));
else
this->PostMessage(TB_HIDEBUTTON, index ,(LPARAM) MAKELONG(TRUE, 0));
// delete ptbbtn;
}void CTrayToolBar::HideAll()
{ if(!m_handle) {AfxMessageBox("获取system tray失败!"); return;} int i = 0;
while(i < ICON_MAX )
{
this->ShowIcon(i,FALSE);
i++;
} Refresh();}void CTrayToolBar::Refresh()
{ NOTIFYICONDATAW Icon;
Icon.cbSize = sizeof( NOTIFYICONDATAW );
Icon.hWnd = this->m_hWnd ;
Icon.uID = 0;
Icon.uFlags = NIF_MESSAGE | NIF_TIP;
Icon.uCallbackMessage = WM_USER + 777;
Icon.hIcon = NULL; Shell_NotifyIconW( NIM_ADD , &Icon );
Shell_NotifyIconW( NIM_DELETE , &Icon );}void CTrayToolBar::DeleteIcon(int index)
{
if(!m_handle) {AfxMessageBox("获取system tray失败!"); return;} this->DeleteButton(index);
Refresh();
}
int CTrayToolBar::GetCount()
{
if(!m_handle) {AfxMessageBox("获取system tray失败!"); return 0;}
return this->GetButtonCount();
}
我怎么忘了。
我本来想获取button的idcommand信息,这样就不用 从 0到ICON_MAX都发消息了,void CTrayToolBar::ShowIcon(int index ,BOOL bShow)
{
if(!m_handle) {AfxMessageBox("获取system tray失败!"); return;}
//本来这里可以通过index来获得 nID,但是虽然函数成功,但idCommand却是错误的
/*
TBBUTTON * ptbbtn= new TBBUTTON;
this->SendMessage(TB_GETBUTTON,(WPARAM) index,(LPARAM) ptbbtn);
*/
if(bShow)
this->PostMessage(TB_HIDEBUTTON, index ,(LPARAM) MAKELONG(FALSE, 0));
else
this->PostMessage(TB_HIDEBUTTON, index ,(LPARAM) MAKELONG(TRUE, 0));
// delete ptbbtn;
}
如果谁能从鼠标的位置确定nid,再转换成为index,就更完美了。