⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ismsgmanager.cpp

📁 WMI接口测试Demo程序
💻 CPP
字号:
// ISMsgManager.cpp: implementation of the ISMsgManager class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ISMsgManager.h"
#include "ISMsgHandlers.h" // derived handlers

#include <afxpriv.h> // for MFC messages

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

// static methods
BOOL CISMsgManager::HandleMsg(const MSG* pMsg, CString& sMsg, CStringArray* pParams)
{
	ASSERT (AfxIsValidString(sMsg));

	CISMsgHandler* pMsgHandler = GetInstance().GetHandler(pMsg->message);

	if (!pMsgHandler || !pMsgHandler->HandleMsg(pMsg, sMsg, pParams))
	{
		if (pMsg->message > WM_APP)
			sMsg.Format("WM_APP + %d", pMsg->message - WM_APP);
		else
			sMsg.Format("Unknown (%08x)", pMsg->message);
	}

	if (!pParams)
	{
		CString sTemp(sMsg);
		sMsg.Format("%s: wp = %08x, lp = %08x", sTemp, pMsg->wParam, pMsg->lParam);
	}
	else if (!pParams->GetSize())
	{
		CISMsgHandler::AddParam(*pParams, "wp = %08x", pMsg->wParam);
		CISMsgHandler::AddParam(*pParams, "lp = %08x", pMsg->lParam);
	}

	return TRUE;
}

// class methods
CISMsgManager::CISMsgManager()
{
	CreateMessageMap();
}

CISMsgManager::~CISMsgManager()
{
	DeleteMessageMap();
}

#define ADDHANDLER(msg) { AddHandler(msg, new CISMsgHandler(msg, #msg)); }
#define ADDHANDLEREX(msg, classtype) { AddHandler(msg, new classtype(msg, #msg)); }

void CISMsgManager::CreateMessageMap()
{
	ADDHANDLER(WM_NULL);                    
	ADDHANDLEREX(WM_CREATE, CISMH_Create);            
	ADDHANDLER(WM_DESTROY);    
	ADDHANDLER(WM_MOVE);              
	ADDHANDLER(0x0004/*WM_SIZEWAIT*/);        
	ADDHANDLER(WM_SIZE);               
	ADDHANDLER(WM_ACTIVATE);         
	ADDHANDLER(WM_SETFOCUS);                 
	ADDHANDLER(WM_KILLFOCUS);             
	ADDHANDLER(0x0009/*WM_SETVISIBLE*/);           
	ADDHANDLER(WM_ENABLE);                   
	ADDHANDLER(WM_SETREDRAW);             
	ADDHANDLER(WM_SETTEXT);              
	ADDHANDLER(WM_GETTEXT);                    
	ADDHANDLER(WM_GETTEXTLENGTH);        
	ADDHANDLER(WM_PAINT);               
	ADDHANDLER(WM_CLOSE);                      
	ADDHANDLER(WM_QUERYENDSESSION);  
	ADDHANDLER(WM_QUIT);                       
	ADDHANDLER(WM_QUERYOPEN);         
	ADDHANDLER(WM_ERASEBKGND);           
	ADDHANDLER(WM_SYSCOLORCHANGE);   
	ADDHANDLER(WM_ENDSESSION);           
	ADDHANDLER(0x0017/*WM_SYSTEMERROR*/);            
	ADDHANDLER(WM_SHOWWINDOW);          
	ADDHANDLER(WM_CTLCOLOR);              
	ADDHANDLER(WM_WININICHANGE);       
	ADDHANDLER(WM_SETTINGCHANGE); 
	ADDHANDLER(WM_DEVMODECHANGE);   
	ADDHANDLER(WM_ACTIVATEAPP);       
	ADDHANDLER(WM_FONTCHANGE);          
	ADDHANDLER(WM_TIMECHANGE);         
	ADDHANDLER(WM_CANCELMODE);       
	ADDHANDLER(WM_SETCURSOR);          
	ADDHANDLER(WM_MOUSEACTIVATE);          
	ADDHANDLER(WM_CHILDACTIVATE);       
	ADDHANDLER(WM_QUEUESYNC);           
	ADDHANDLER(WM_GETMINMAXINFO);         
	ADDHANDLER(WM_PAINTICON);          
	ADDHANDLER(WM_ICONERASEBKGND);   
	ADDHANDLER(WM_NEXTDLGCTL);   
	ADDHANDLER(0x0029/*WM_ALTTABACTIVE*/);         
	ADDHANDLER(WM_SPOOLERSTATUS);           
	ADDHANDLER(WM_DRAWITEM);            
	ADDHANDLER(WM_MEASUREITEM);   
	ADDHANDLER(WM_DELETEITEM);              
	ADDHANDLER(WM_VKEYTOITEM);          
	ADDHANDLER(WM_CHARTOITEM);       
	ADDHANDLER(WM_SETFONT);                 
	ADDHANDLER(WM_GETFONT);                 
	ADDHANDLER(WM_SETHOTKEY);              
	ADDHANDLER(WM_GETHOTKEY);             
	ADDHANDLER(0x0034/*WM_FILESYSCHANGE*/);       
	ADDHANDLER(0x0035/*WM_ISACTIVEICON*/);            
	ADDHANDLER(0x0036/*WM_QUERYPARKICON*/);               
	ADDHANDLER(WM_QUERYDRAGICON);                
	ADDHANDLER(0x0038/*WM_QUERYSAVESTATE*/);           
	ADDHANDLER(WM_COMPAREITEM);             
	ADDHANDLER(0x003A/*WM_TESTING*/);                  
	ADDHANDLER(0x003D/*WM_GETOBJECT*/);                
	ADDHANDLER(0x003E/*WM_ACTIVATESHELLWINDOW*/);  
	ADDHANDLER(WM_COMPACTING);                 
	ADDHANDLER(0x0042/*WM_OTHERWINDOWCREATED*/); 
	ADDHANDLER(0x0043/*WM_OTHERWINDOWDESTROYED*/);    
	ADDHANDLER(WM_COMMNOTIFY);          
	ADDHANDLER(WM_WINDOWPOSCHANGING); 
	ADDHANDLER(WM_WINDOWPOSCHANGED);       
	ADDHANDLER(WM_POWER);                
	ADDHANDLER(WM_COPYDATA);                
	ADDHANDLER(WM_CANCELJOURNAL);          
	ADDHANDLER(WM_NOTIFY);                 
	ADDHANDLER(WM_INPUTLANGCHANGEREQUEST); 
	ADDHANDLER(WM_INPUTLANGCHANGE);        
	ADDHANDLER(WM_TCARD);                 
	ADDHANDLER(WM_HELP);               
	ADDHANDLER(WM_USERCHANGED);      
	ADDHANDLER(WM_NOTIFYFORMAT);   
	ADDHANDLER(WM_CONTEXTMENU);              
	ADDHANDLER(WM_STYLECHANGING);        
	ADDHANDLER(WM_STYLECHANGED);       
	ADDHANDLER(WM_DISPLAYCHANGE);           
	ADDHANDLER(WM_GETICON);            
	ADDHANDLER(WM_SETICON);    
	ADDHANDLEREX(WM_NCCREATE, CISMH_Create);            
	ADDHANDLER(WM_NCDESTROY);          
	ADDHANDLER(WM_NCCALCSIZE);         
	ADDHANDLER(WM_NCHITTEST);         
	ADDHANDLER(WM_NCPAINT);        
	ADDHANDLER(WM_NCACTIVATE);            
	ADDHANDLER(WM_GETDLGCODE);            
	ADDHANDLER(WM_SYNCPAINT);             
	ADDHANDLER(0x0089/*WM_SYNCTASK*/);             
	ADDHANDLER(WM_NCMOUSEMOVE);              
	ADDHANDLER(WM_NCLBUTTONDOWN);           
	ADDHANDLER(WM_NCLBUTTONUP);      
	ADDHANDLER(WM_NCLBUTTONDBLCLK); 
	ADDHANDLER(WM_NCRBUTTONDOWN);          
	ADDHANDLER(WM_NCRBUTTONUP);           
	ADDHANDLER(WM_NCRBUTTONDBLCLK);       
	ADDHANDLER(WM_NCMBUTTONDOWN); 
	ADDHANDLER(WM_NCMBUTTONUP);    
	ADDHANDLER(WM_NCMBUTTONDBLCLK); 
	ADDHANDLER(0x00AB/*WM_NCXBUTTONDOWN*/);           
	ADDHANDLER(0x00AD/*WM_NCXBUTTONUP*/);    
	ADDHANDLER(0x00AE/*WM_NCXBUTTONDBLCLK*/);    
	ADDHANDLER(WM_KEYFIRST);                    
	ADDHANDLER(WM_KEYDOWN);                
	ADDHANDLER(WM_KEYUP);                      
	ADDHANDLER(WM_CHAR);                
	ADDHANDLER(WM_DEADCHAR);             
	ADDHANDLER(WM_SYSKEYDOWN);                
	ADDHANDLER(WM_SYSKEYUP);              
	ADDHANDLER(WM_SYSCHAR);                   
	ADDHANDLER(WM_SYSDEADCHAR);            
	ADDHANDLER(WM_KEYLAST);           
	ADDHANDLER(0x0109/*WM_WNT_CONVERTREQUESTEX*/); 
	ADDHANDLER(0x010A/*WM_CONVERTREQUEST*/);          
	ADDHANDLER(0x010B/*WM_CONVERTRESULT*/);             
	ADDHANDLER(0x010C/*WM_INTERIM*/);                   
	ADDHANDLER(WM_IME_STARTCOMPOSITION);  
	ADDHANDLER(WM_IME_ENDCOMPOSITION);       
	ADDHANDLER(WM_IME_COMPOSITION);          
	ADDHANDLER(WM_IME_KEYLAST);                
	ADDHANDLER(WM_INITDIALOG);                  
	ADDHANDLER(WM_COMMAND);                     
	ADDHANDLER(WM_SYSCOMMAND);              
	ADDHANDLER(WM_TIMER);                   
	ADDHANDLER(WM_HSCROLL);                    
	ADDHANDLER(WM_VSCROLL);                 
	ADDHANDLER(WM_INITMENU);                   
	ADDHANDLER(WM_INITMENUPOPUP);        
	ADDHANDLER(WM_MENUSELECT);                
	ADDHANDLER(WM_MENUCHAR);             
	ADDHANDLER(WM_ENTERIDLE);                
	ADDHANDLER(0x0122/*WM_MENURBUTTONUP*/);          
	ADDHANDLER(0x0123/*WM_MENUDRAG*/);                   
	ADDHANDLER(0x0124/*WM_MENUGETOBJECT*/);            
	ADDHANDLER(0x0125/*WM_UNINITMENUPOPUP*/);         
	ADDHANDLER(0x0126/*WM_MENUCOMMAND*/);                 
	ADDHANDLER(0x0127/*WM_CHANGEUISTATE*/);                
	ADDHANDLER(0x0128/*WM_UPDATEUISTATE*/);              
	ADDHANDLER(0x0129/*WM_QUERYUISTATE*/);          
	ADDHANDLER(0x0131/*WM_LBTRACKPOINT*/);        
	ADDHANDLER(WM_CTLCOLORMSGBOX);              
	ADDHANDLER(WM_CTLCOLOREDIT);               
	ADDHANDLER(WM_CTLCOLORLISTBOX);        
	ADDHANDLER(WM_CTLCOLORBTN);      
	ADDHANDLER(WM_CTLCOLORDLG);            
	ADDHANDLER(WM_CTLCOLORSCROLLBAR);          
	ADDHANDLER(WM_CTLCOLORSTATIC);            
	ADDHANDLER(0x01E5/*WM_MENUCURRENTSEL*/);       
//	ADDHANDLER(WM_MOUSEFIRST);                  
	ADDHANDLER(WM_MOUSEMOVE);               
	ADDHANDLER(WM_LBUTTONDOWN);               
	ADDHANDLER(WM_LBUTTONUP);                
	ADDHANDLER(WM_LBUTTONDBLCLK);           
	ADDHANDLER(WM_RBUTTONDOWN);          
	ADDHANDLER(WM_RBUTTONUP);                   
	ADDHANDLER(WM_RBUTTONDBLCLK);             
	ADDHANDLER(WM_MBUTTONDOWN);             
	ADDHANDLER(WM_MBUTTONUP);                  
	ADDHANDLER(WM_MBUTTONDBLCLK);          
	ADDHANDLER(WM_MOUSEWHEEL);                
	ADDHANDLER(0x020B/*WM_XBUTTONDOWN*/);            
	ADDHANDLER(0x020C/*WM_XBUTTONUP*/);                  
	ADDHANDLER(0x020D/*WM_XBUTTONDBLCLK*/);            
	ADDHANDLER(WM_PARENTNOTIFY);               
	ADDHANDLER(WM_ENTERMENULOOP);            
	ADDHANDLER(WM_EXITMENULOOP);              
	ADDHANDLER(WM_NEXTMENU);                    
	ADDHANDLER(WM_SIZING);                   
	ADDHANDLER(WM_CAPTURECHANGED);             
	ADDHANDLER(WM_MOVING);                      
	ADDHANDLER(WM_POWERBROADCAST);           
	ADDHANDLER(WM_DEVICECHANGE);          
	ADDHANDLER(WM_MDICREATE);                   
	ADDHANDLER(WM_MDIDESTROY);                  
	ADDHANDLER(WM_MDIACTIVATE);                
	ADDHANDLER(WM_MDIRESTORE);             
	ADDHANDLER(WM_MDINEXT);                    
	ADDHANDLER(WM_MDIMAXIMIZE);                  
	ADDHANDLER(WM_MDITILE);                    
	ADDHANDLER(WM_MDICASCADE);                  
	ADDHANDLER(WM_MDIICONARRANGE);          
	ADDHANDLER(WM_MDIGETACTIVE);       
	ADDHANDLER(0x022A/*WM_DROPOBJECT*/);                 
	ADDHANDLER(0x022B/*WM_QUERYDROPOBJECT*/);             
	ADDHANDLER(0x022C/*WM_BEGINDRAG*/);                 
	ADDHANDLER(0x022D/*WM_DRAGLOOP*/);                  
	ADDHANDLER(0x022E/*WM_DRAGSELECT*/);                
	ADDHANDLER(0x022F/*WM_DRAGMOVE*/);              
	ADDHANDLER(WM_MDISETMENU);              
	ADDHANDLER(WM_ENTERSIZEMOVE);          
	ADDHANDLER(WM_EXITSIZEMOVE);              
	ADDHANDLER(WM_DROPFILES);                 
	ADDHANDLER(WM_MDIREFRESHMENU);             
	ADDHANDLER(WM_IME_SETCONTEXT);            
	ADDHANDLER(WM_IME_NOTIFY);                  
	ADDHANDLER(WM_IME_CONTROL);               
	ADDHANDLER(WM_IME_COMPOSITIONFULL);       
	ADDHANDLER(WM_IME_SELECT);                 
	ADDHANDLER(WM_IME_CHAR);                  
	ADDHANDLER(0x0288/*WM_IME_REQUEST*/);                
	ADDHANDLER(WM_IME_KEYDOWN);             
	ADDHANDLER(WM_IME_KEYUP);                  
	ADDHANDLER(WM_MOUSEHOVER);                  
	ADDHANDLER(WM_MOUSELEAVE);               
	ADDHANDLER(WM_CUT);                         
	ADDHANDLER(WM_COPY);                        
	ADDHANDLER(WM_PASTE);                       
	ADDHANDLER(WM_CLEAR);                    
	ADDHANDLER(WM_UNDO);                         
	ADDHANDLER(WM_RENDERFORMAT);              
	ADDHANDLER(WM_RENDERALLFORMATS);        
	ADDHANDLER(WM_DESTROYCLIPBOARD);        
	ADDHANDLER(WM_DRAWCLIPBOARD);        
	ADDHANDLER(WM_PAINTCLIPBOARD);           
	ADDHANDLER(WM_VSCROLLCLIPBOARD);           
	ADDHANDLER(WM_SIZECLIPBOARD);             
	ADDHANDLER(WM_ASKCBFORMATNAME);          
	ADDHANDLER(WM_CHANGECBCHAIN);                
	ADDHANDLER(WM_HSCROLLCLIPBOARD);             
	ADDHANDLER(WM_QUERYNEWPALETTE);              
	ADDHANDLER(WM_PALETTEISCHANGING);       
	ADDHANDLER(WM_PALETTECHANGED);               
	ADDHANDLER(WM_HOTKEY);                     
	ADDHANDLER(WM_PRINT);                    
	ADDHANDLER(WM_PRINTCLIENT);             
	ADDHANDLER(WM_HANDHELDFIRST);     
	ADDHANDLER(WM_HANDHELDLAST);               
	ADDHANDLER(WM_AFXFIRST);                  
	ADDHANDLER(WM_AFXLAST);                    
	ADDHANDLER(WM_PENWINFIRST);                  
	ADDHANDLER(0x0381/*WM_RCRESULT*/);                  
	ADDHANDLER(0x0382/*WM_HOOKRCRESULT*/);                
//	ADDHANDLER(0x0383/*WM_PENMISCINFO*/);                
	ADDHANDLER(0x0383/*WM_GLOBALRCCHANGE*/);     
	ADDHANDLER(0x0384/*WM_SKB*/);                          
	ADDHANDLER(0x0385/*WM_PENCTL*/);                    
//	ADDHANDLER(0x0/*WM_HEDITCTL*/);                  
	ADDHANDLER(0x0386/*WM_PENMISC*/);                    
	ADDHANDLER(0x0387/*WM_CTLINIT*/);                 
	ADDHANDLER(0x0388/*WM_PENEVENT*/);                 
	ADDHANDLER(WM_PENWINLAST);                
	ADDHANDLER(WM_APP);                       
	ADDHANDLER(WM_QUERYAFXWNDPROC);         
	ADDHANDLER(WM_SIZEPARENT);                 
	ADDHANDLER(WM_SETMESSAGESTRING);            
	ADDHANDLER(WM_IDLEUPDATECMDUI);            
	ADDHANDLER(WM_INITIALUPDATE);             
	ADDHANDLER(WM_COMMANDHELP);          
	ADDHANDLER(WM_HELPHITTEST);                 
	ADDHANDLER(WM_EXITHELPMODE);                
	ADDHANDLER(WM_RECALCPARENT);                
	ADDHANDLER(WM_SIZECHILD);                   
	ADDHANDLER(WM_KICKIDLE);             
	ADDHANDLER(WM_QUERYCENTERWND);             
	ADDHANDLER(WM_DISABLEMODAL);               
	ADDHANDLER(WM_FLOATSTATUS);                
	ADDHANDLER(WM_ACTIVATETOPLEVEL);            
	ADDHANDLER(WM_QUERY3DCONTROLS);              
	ADDHANDLER(WM_SOCKET_NOTIFY);               
	ADDHANDLER(WM_SOCKET_DEAD);                
	ADDHANDLER(WM_POPMESSAGESTRING);        
	ADDHANDLER(WM_HELPPROMPTADDR);             
	ADDHANDLER(WM_FORWARDMSG);                
}

BOOL CISMsgManager::AddHandler(UINT uMsg, CISMsgHandler* pMsgHandler)
{
	// delete any existing handler
	delete GetHandler(uMsg);

	m_mapHandlers[uMsg] = pMsgHandler;

	return TRUE;
}

CISMsgHandler* CISMsgManager::GetHandler(UINT uMsg)
{
	CISMsgHandler* pHandler = NULL;

	m_mapHandlers.Lookup(uMsg, pHandler);

	return pHandler;
}

void CISMsgManager::DeleteMessageMap()
{
	// iterate the map deleting as we go
	POSITION pos = m_mapHandlers.GetStartPosition();

	UINT uMsg;
	CISMsgHandler* pHandler = NULL;

	while (pos)
	{
		m_mapHandlers.GetNextAssoc(pos, uMsg, pHandler);
		delete pHandler;
	}

	m_mapHandlers.RemoveAll();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -