📄 donut.h
字号:
// Donut.h
#pragma once
#define WM_USER_OPENFILES WM_USER + 29
#define MSG_WM_USER_OPENFILES(func) \
if (uMsg == WM_USER_OPENFILES) \
{ \
SetMsgHandled(TRUE); \
func((CSimpleArray<CString>*)wParam, (DWORD)lParam); \
lResult = 0; \
if(IsMsgHandled()) \
return TRUE; \
}
#define WM_USER_OPENFILE WM_USER + 32
#define MSG_WM_USER_OPENFILE(func) \
if (uMsg == WM_USER_OPENFILE) \
{ \
SetMsgHandled(TRUE); \
lResult = (LRESULT)func((LPCTSTR)wParam, (DWORD)lParam); \
if(IsMsgHandled()) \
return TRUE; \
}
// WM_USER_GO's lParam flags
#define D_OPENFILE_ACTIVATE 0x00000001
#define D_OPENFILE_NOCREATE 0x00000002
#define D_OPENFILE_NOSETFOCUS 0x00000004
#define WM_USER_GET_IWEBBROWSER WM_USER + 30
#define MSG_WM_USER_GET_IWEBBROWSER() \
if (uMsg == WM_USER_GET_IWEBBROWSER) \
{ \
SetMsgHandled(TRUE); \
lResult = (LRESULT)m_spBrowser.p; \
if(IsMsgHandled()) \
return TRUE; \
}
#define MSG_WM_USER_GET_ACTIVE_IWEBBROWSER() \
if (uMsg == WM_USER_GET_IWEBBROWSER) \
{ \
SetMsgHandled(TRUE); \
HWND hWnd = MDIGetActive(); \
if (hWnd != NULL) \
lResult = (LRESULT)DonutGetIWebBrowser2(hWnd); \
else \
lResult = NULL; \
if(IsMsgHandled()) \
return TRUE; \
}
#define WM_USER_INITIAL_UPDATE WM_USER + 31
#define MSG_WM_USER_INITIAL_UPDATE(func) \
if (uMsg == WM_USER_INITIAL_UPDATE) \
{ \
SetMsgHandled(TRUE); \
func((IWebBrowser2*)wParam, (IAxWinHostWindow*)lParam); \
lResult = 0; \
if(IsMsgHandled()) \
return TRUE; \
}
#define WM_USER_GET_ACTIVE_WINDOW WM_USER + 35
#define MSG_WM_USER_GET_ACTIVE_WINDOW() \
if (uMsg == WM_USER_GET_ACTIVE_WINDOW) \
{ \
SetMsgHandled(TRUE); \
lResult = (LRESULT)MDIGetActive(); \
if(IsMsgHandled()) \
return TRUE; \
}
#define WM_USER_BROWSER_CAN_SETFOCUS WM_USER + 36
#define MSG_WM_USER_BROWSER_CAN_SETFOCUS(func) \
if (uMsg == WM_USER_BROWSER_CAN_SETFOCUS) \
{ \
SetMsgHandled(TRUE); \
lResult = (LRESULT)func(); \
if(IsMsgHandled()) \
return TRUE; \
}
#define WM_USER_GET_DLCONTROL_FLAGS WM_USER + 40
#define MSG_WM_USER_GET_DLCONTROL_FLAGS(func) \
if (uMsg == WM_USER_GET_DLCONTROL_FLAGS) \
{ \
SetMsgHandled(TRUE); \
lResult = (LRESULT)func((BOOL)wParam); \
if(IsMsgHandled()) \
return TRUE; \
}
inline IWebBrowser2* DonutGetIWebBrowser2(HWND hWnd)
{
return (IWebBrowser2*)::SendMessage(hWnd, WM_USER_GET_IWEBBROWSER, 0, 0);
}
inline HWND DonutGetActiveWindow(HWND hWnd)
{
return (HWND)::SendMessage(hWnd, WM_USER_GET_ACTIVE_WINDOW, 0, 0);
}
inline HWND DonutOpenFile(HWND hWnd, const CString& strFile, DWORD dwOpenFlag = 0)
{
CWindow wnd(hWnd);
return (HWND)::SendMessage(wnd.GetTopLevelParent(), WM_USER_OPENFILE,
(WPARAM)(LPCTSTR)strFile, (LPARAM)dwOpenFlag);
}
inline bool DonutBrowserCanSetFocus(HWND hWnd)
{
CWindow wnd(hWnd);
BOOL b = (BOOL)::SendMessage(wnd.GetTopLevelParent(), WM_USER_BROWSER_CAN_SETFOCUS, 0L, 0L);
return b == TRUE ? true : false;
}
inline void DonutToggleOpenFlag(DWORD &dwFlag)
{
if (::GetAsyncKeyState(VK_CONTROL) < 0 || ::GetAsyncKeyState(VK_SHIFT) < 0) {
if (_check_flag(D_OPENFILE_NOCREATE, dwFlag))
dwFlag &= ~D_OPENFILE_NOCREATE;
else
dwFlag |= D_OPENFILE_NOCREATE;
}
}
inline DWORD DonutGetStdOpenFlag()
{
DWORD dwFlag = 0;
if (!_check_flag(MAIN_EX_NEWWINDOW, CMainOption::s_dwMainExtendedStyle))
dwFlag |= D_OPENFILE_NOCREATE;
if (!_check_flag(MAIN_EX_NOACTIVATE, CMainOption::s_dwMainExtendedStyle))
dwFlag |= D_OPENFILE_ACTIVATE;
DonutToggleOpenFlag(dwFlag);
return dwFlag;
}
inline DWORD DonutGetStdOpenFlagNoToggle()
{
DWORD dwFlag = 0;
if (!_check_flag(MAIN_EX_NEWWINDOW, CMainOption::s_dwMainExtendedStyle))
dwFlag |= D_OPENFILE_NOCREATE;
if (!_check_flag(MAIN_EX_NOACTIVATE, CMainOption::s_dwMainExtendedStyle))
dwFlag |= D_OPENFILE_ACTIVATE;
return dwFlag;
}
inline DWORD DonutGetStdOpenActivateFlag()
{
DWORD dwFlag = 0;
if (!_check_flag(MAIN_EX_NOACTIVATE, CMainOption::s_dwMainExtendedStyle))
dwFlag |= D_OPENFILE_ACTIVATE;
return dwFlag;
}
inline DWORD DonutGetDLContrlFlags(HWND hWnd, bool bFromView)
{
return (DWORD)::SendMessage(hWnd, WM_USER_GET_DLCONTROL_FLAGS, (bFromView == true) ? TRUE : FALSE, 0L);
}
//#ifdef _DEBUG
#define DEBUG_CHECK_FOCUS_COMMAND_ID_HANDLER_EX() \
if (uMsg == WM_COMMAND && ID_DEBUG_CHECK_FOCUS == LOWORD(wParam)) \
{ \
SetMsgHandled(TRUE); \
MessageBox(MtlGetWindowClassName(::GetFocus()), _T("Focus Checker"), MB_OK); \
ATLTRACE(_T("Donut::Current Focus = (%x,%s)\n"), ::GetFocus(), MtlGetWindowClassName(::GetFocus())); \
lResult = 0; \
if(IsMsgHandled()) \
return TRUE; \
}
//#else
//#define DEBUG_CHECK_FOCUS_COMMAND_ID_HANDLER_EX()
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -