屏蔽和恢复警告信息
#define PTM_WARNING_DISABLE \
__pragma(warning( push )) \
__pragma(warning( disable : 4867 ))
#define PTM_WARNING_RESTORE \
__pragma(warning( pop ))
#endif //_ATL_ENABLE_PTM_WARNING
加载按钮消息
#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
PTM_WARNING_DISABLE \
const AFX_MSGMAP* theClass::GetMessageMap() const \
{ return GetThisMessageMap(); } \
const AFX_MSGMAP* PASCAL theClass::GetThisMessageMap() \
{ \
typedef theClass ThisClass; \
typedef baseClass TheBaseClass; \
static const AFX_MSGMAP_ENTRY _messageEntries[] = \
{
#define END_MESSAGE_MAP() \
{0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
}; \
static const AFX_MSGMAP messageMap = \
{ &TheBaseClass::GetThisMessageMap, &_messageEntries[0] }; \
return &messageMap; \
} \
PTM_WARNING_RESTORE
BEGIN_MESSAGE_MAP(CIMEDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CIMEDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CIMEDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, &CIMEDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON4, &CIMEDlg::OnBnClickedButton4)
END_MESSAGE_MAP()
static int __cdecl Format( __out LPWSTR pszBuffer, __in __format_string LPCWSTR pszFormat, va_list args) throw()
{
#pragma warning (push)
#pragma warning(disable : 4996)
return vswprintf( pszBuffer, pszFormat, args );
#pragma warning (pop)
}
inline int _wcstombsz(__out_ecount(count) char* mbstr, __in_z const wchar_t* wcstr, __in ULONG count) throw()
{
// count is number of bytes
if (count == 0 && mbstr != NULL)
return 0;
int result = ::WideCharToMultiByte(_AtlGetConversionACP(), 0, wcstr, -1,
mbstr, count, NULL, NULL);
ATLASSERT(mbstr == NULL || result <= (int)count);
return result;
}
inline int _mbstowcsz(__out_ecount_z(count) wchar_t* wcstr, __in_z const char* mbstr, __in ULONG count)
{
// count is number of wchar_t's
if (count == 0 && wcstr != NULL)
return 0;
int result = ::MultiByteToWideChar(_AtlGetConversionACP(), 0, mbstr, -1,
wcstr, count);
ATLENSURE(wcstr == NULL || result <= (int)count);
if ((result > 0) && (wcstr != NULL))
{
wcstr[result-1] = 0;
}
return result;
}