📄 winclasses.cpp
字号:
// WinClasses.cpp: implementation of the CWinClasses class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "WinClasses.h"
#include "wclassdefines.h"
#include <afxpriv.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
// helper function for everyone to use
void TRACEWND(LPCTSTR szFunctionName, HWND hWnd)
{
#ifdef _DEBUG
if (hWnd)
{
CString sText;
// pWnd->GetWindowText(sText);
TRACE ("%s(%s, %s, id = %d)\n", szFunctionName, CWinClasses::GetClass(hWnd), sText, GetDlgCtrlID(hWnd));
}
#endif
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMap<LPCTSTR, LPCTSTR, int, int&> CWinClasses::s_mapCtrlClasses;
LPCTSTR CWinClasses::GetClass(HWND hWnd)
{
static char cClass[30];
cClass[0] = 0;
LPTSTR szClass = (LPTSTR)&cClass;
if (hWnd)
::GetClassName(hWnd, szClass, 29);
return szClass;
}
LPCTSTR CWinClasses::GetClassEx(HWND hWnd)
{
LPCTSTR szClass = GetClass(hWnd);
if (CString(szClass).Find("Afx") == 0) // its an mfc framework base or derived class
{
// can do the check if pWnd is permanent else mfc will not yet
// have hooked up
CWnd* pWnd = CWnd::FromHandlePermanent(hWnd);
if (pWnd)
{
// must do the check in order of most derived class first
if (pWnd->IsKindOf(RUNTIME_CLASS(CView)))
return WC_MFCVIEW;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd)))
return WC_MFCMDIFRAME;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CMDIChildWnd)))
return WC_MFCMDICHILD;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CMiniDockFrameWnd)))
return WC_MFCMINIDOCKFRAME;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
return WC_MFCMINIFRAME;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CFrameWnd))) // this is the catch all for frame wnds
return WC_MFCFRAME;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CSplitterWnd)))
return WC_MFCSPLITTER;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CDialogBar)))
return WC_MFCDIALOGBAR;
else if (pWnd->IsKindOf(RUNTIME_CLASS(CControlBar)))
return WC_CONTROLBAR;
else
return WC_MFCWND; // catch all for all window classes
}
}
return szClass;
}
BOOL CWinClasses::IsControlClass(HWND hWnd)
{
return IsControlClass(GetClass(hWnd));
}
BOOL CWinClasses::IsControlClass(LPCTSTR szClass)
{
// init
if (!s_mapCtrlClasses.GetCount())
{
s_mapCtrlClasses[WC_BUTTON] = 1;
s_mapCtrlClasses[WC_STATIC] = 1;
s_mapCtrlClasses[WC_EDIT] = 1;
s_mapCtrlClasses[WC_COMBOBOX] = 1;
s_mapCtrlClasses[WC_COMBOLBOX] = 1;
s_mapCtrlClasses[WC_LISTBOX] = 1;
s_mapCtrlClasses[WC_SCROLLBAR] = 1;
s_mapCtrlClasses[WC_TOOLBAR] = 1;
s_mapCtrlClasses[WC_SPIN] = 1;
s_mapCtrlClasses[WC_PROGRESS] = 1;
s_mapCtrlClasses[WC_SLIDER] = 1;
s_mapCtrlClasses[WC_HOTKEY] = 1;
s_mapCtrlClasses[WC_SHELLDLLDEFVIEW] = 1;
s_mapCtrlClasses[WC_STATUSBAR] = 1;
s_mapCtrlClasses[WC_ANIMATE] = 1;
s_mapCtrlClasses[WC_RICHEDIT] = 1;
s_mapCtrlClasses[WC_RICHEDIT20] = 1;
s_mapCtrlClasses[WC_DATETIMEPICK] = 1;
s_mapCtrlClasses[WC_MONTHCAL] = 1;
s_mapCtrlClasses[WC_REBAR] = 1;
s_mapCtrlClasses[WC_TOOLTIPS] = 1;
s_mapCtrlClasses[WC_THUMBNAILVIEW] = 1;
s_mapCtrlClasses[WC_IE] = 1;
s_mapCtrlClasses[WC_SHDOCOBJVW] = 1;
s_mapCtrlClasses[WC_SHELLEMBEDDING] = 1;
}
int nTemp;
return s_mapCtrlClasses.Lookup(szClass, nTemp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -