|
|
|
@ -55,23 +55,31 @@ namespace // anonymous
|
|
|
|
|
void Notepad_plus_Window::setStartupBgColor(COLORREF BgColor)
|
|
|
|
|
{
|
|
|
|
|
RECT windowClientArea;
|
|
|
|
|
/// 定义窗口的变量
|
|
|
|
|
///
|
|
|
|
|
/// 获取对应的设备来方便绘制图形
|
|
|
|
|
/// 该函数用于设置窗口的整体颜色
|
|
|
|
|
///
|
|
|
|
|
HDC hdc = GetDCEx(_hSelf, NULL, DCX_CACHE | DCX_LOCKWINDOWUPDATE); //lock window update flag due to PaintLocker
|
|
|
|
|
GetClientRect(_hSelf, &windowClientArea);
|
|
|
|
|
FillRect(hdc, &windowClientArea, CreateSolidBrush(BgColor));
|
|
|
|
|
ReleaseDC(_hSelf, hdc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLine, CmdLineParams *cmdLineParams)
|
|
|
|
|
void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR* cmdLine, CmdLineParams* cmdLineParams)
|
|
|
|
|
{
|
|
|
|
|
/// 该函数用于在最初的时候初始化窗口变量,
|
|
|
|
|
/// 建立窗口变量
|
|
|
|
|
// 初始化时间戳
|
|
|
|
|
time_t timestampBegin = 0;
|
|
|
|
|
if (cmdLineParams->_showLoadingTime)
|
|
|
|
|
timestampBegin = time(NULL);
|
|
|
|
|
|
|
|
|
|
// 初始化窗口
|
|
|
|
|
Window::init(hInst, parent);
|
|
|
|
|
WNDCLASS nppClass{};
|
|
|
|
|
|
|
|
|
|
// 设置窗口类属性
|
|
|
|
|
nppClass.style = CS_BYTEALIGNWINDOW | CS_DBLCLKS;
|
|
|
|
|
nppClass.lpfnWndProc = Notepad_plus_Proc;
|
|
|
|
|
nppClass.cbClsExtra = 0;
|
|
|
|
@ -85,49 +93,56 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
|
|
|
|
|
_isPrelaunch = cmdLineParams->_isPreLaunch;
|
|
|
|
|
|
|
|
|
|
// 注册窗口类
|
|
|
|
|
if (!::RegisterClass(&nppClass))
|
|
|
|
|
{
|
|
|
|
|
throw std::runtime_error("Notepad_plus_Window::init : RegisterClass() function failed");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取 Notepad++ 参数实例
|
|
|
|
|
NppParameters& nppParams = NppParameters::getInstance();
|
|
|
|
|
NppGUI & nppGUI = nppParams.getNppGUI();
|
|
|
|
|
NppGUI& nppGUI = nppParams.getNppGUI();
|
|
|
|
|
|
|
|
|
|
// 根据命令行参数禁用插件
|
|
|
|
|
if (cmdLineParams->_isNoPlugin)
|
|
|
|
|
_notepad_plus_plus_core._pluginsManager.disable();
|
|
|
|
|
|
|
|
|
|
// 设置命令行参数的会话状态
|
|
|
|
|
nppGUI._isCmdlineNosessionActivated = cmdLineParams->_isNoSession;
|
|
|
|
|
|
|
|
|
|
// 加载图标
|
|
|
|
|
_hIconAbsent = ::LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICONABSENT));
|
|
|
|
|
|
|
|
|
|
// 创建窗口
|
|
|
|
|
_hSelf = ::CreateWindowEx(
|
|
|
|
|
WS_EX_ACCEPTFILES | (_notepad_plus_plus_core._nativeLangSpeaker.isRTL() ? WS_EX_LAYOUTRTL : 0),
|
|
|
|
|
_className,
|
|
|
|
|
TEXT("Notepad++"),
|
|
|
|
|
(WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN),
|
|
|
|
|
// CreateWindowEx bug : set all 0 to walk around the pb
|
|
|
|
|
0, 0, 0, 0,
|
|
|
|
|
_hParent, nullptr, _hInst,
|
|
|
|
|
(LPVOID) this); // pass the ptr of this instantiated object
|
|
|
|
|
// for retrieve it in Notepad_plus_Proc from
|
|
|
|
|
// the CREATESTRUCT.lpCreateParams afterward.
|
|
|
|
|
(LPVOID)this);
|
|
|
|
|
|
|
|
|
|
if (NULL == _hSelf)
|
|
|
|
|
throw std::runtime_error("Notepad_plus_Window::init : CreateWindowEx() function return null");
|
|
|
|
|
|
|
|
|
|
// 锁定绘制
|
|
|
|
|
PaintLocker paintLocker{ _hSelf };
|
|
|
|
|
|
|
|
|
|
PaintLocker paintLocker{_hSelf};
|
|
|
|
|
|
|
|
|
|
// 静态检查菜单和工具栏
|
|
|
|
|
_notepad_plus_plus_core.staticCheckMenuAndTB();
|
|
|
|
|
|
|
|
|
|
// 设置全局窗口句柄
|
|
|
|
|
gNppHWND = _hSelf;
|
|
|
|
|
|
|
|
|
|
// 移动窗口位置或设置默认位置
|
|
|
|
|
if (cmdLineParams->isPointValid())
|
|
|
|
|
{
|
|
|
|
|
::MoveWindow(_hSelf, cmdLineParams->_point.x, cmdLineParams->_point.y, nppGUI._appPos.right, nppGUI._appPos.bottom, TRUE);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// 设置窗口位置信息
|
|
|
|
|
WINDOWPLACEMENT posInfo{};
|
|
|
|
|
posInfo.length = sizeof(WINDOWPLACEMENT);
|
|
|
|
|
posInfo.flags = 0;
|
|
|
|
@ -136,45 +151,53 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
else
|
|
|
|
|
posInfo.showCmd = nppGUI._isMaximized ? SW_SHOWMAXIMIZED : SW_SHOWNORMAL;
|
|
|
|
|
|
|
|
|
|
// 设置窗口位置
|
|
|
|
|
posInfo.ptMinPosition.x = (LONG)-1;
|
|
|
|
|
posInfo.ptMinPosition.y = (LONG)-1;
|
|
|
|
|
posInfo.ptMaxPosition.x = (LONG)-1;
|
|
|
|
|
posInfo.ptMaxPosition.y = (LONG)-1;
|
|
|
|
|
posInfo.rcNormalPosition.left = nppGUI._appPos.left;
|
|
|
|
|
posInfo.rcNormalPosition.top = nppGUI._appPos.top;
|
|
|
|
|
posInfo.rcNormalPosition.left = nppGUI._appPos.left;
|
|
|
|
|
posInfo.rcNormalPosition.top = nppGUI._appPos.top;
|
|
|
|
|
posInfo.rcNormalPosition.bottom = nppGUI._appPos.top + nppGUI._appPos.bottom;
|
|
|
|
|
posInfo.rcNormalPosition.right = nppGUI._appPos.left + nppGUI._appPos.right;
|
|
|
|
|
posInfo.rcNormalPosition.right = nppGUI._appPos.left + nppGUI._appPos.right;
|
|
|
|
|
|
|
|
|
|
// 设置窗口位置
|
|
|
|
|
::SetWindowPlacement(_hSelf, &posInfo);
|
|
|
|
|
|
|
|
|
|
//SetWindowPlacement will take care of situations, where saved position was in no longer available monitor
|
|
|
|
|
::SetWindowPlacement(_hSelf,&posInfo);
|
|
|
|
|
|
|
|
|
|
// 绘制暗色背景
|
|
|
|
|
if (NppDarkMode::isEnabled())
|
|
|
|
|
setStartupBgColor(NppDarkMode::getBackgroundColor()); //draw dark background when opening Npp without position data
|
|
|
|
|
setStartupBgColor(NppDarkMode::getBackgroundColor());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理选项卡显示模式
|
|
|
|
|
if ((nppGUI._tabStatus & TAB_MULTILINE) != 0)
|
|
|
|
|
::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_DRAWTABBAR_MULTILINE, 0);
|
|
|
|
|
|
|
|
|
|
// 隐藏/显示菜单栏
|
|
|
|
|
if (!nppGUI._menuBarShow)
|
|
|
|
|
::SetMenu(_hSelf, NULL);
|
|
|
|
|
|
|
|
|
|
// 隐藏选项卡栏
|
|
|
|
|
if (cmdLineParams->_isNoTab || (nppGUI._tabStatus & TAB_HIDE))
|
|
|
|
|
{
|
|
|
|
|
const int tabStatusOld = nppGUI._tabStatus;
|
|
|
|
|
::SendMessage(_hSelf, NPPM_HIDETABBAR, 0, TRUE);
|
|
|
|
|
if (cmdLineParams->_isNoTab)
|
|
|
|
|
{
|
|
|
|
|
// Restore old settings when tab bar has been hidden from tab bar.
|
|
|
|
|
// 从选项卡栏隐藏后恢复旧设置
|
|
|
|
|
nppGUI._tabStatus = tabStatusOld;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置窗口置顶
|
|
|
|
|
if (cmdLineParams->_alwaysOnTop)
|
|
|
|
|
::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_ALWAYSONTOP, 0);
|
|
|
|
|
|
|
|
|
|
// 加载上次会话
|
|
|
|
|
if (nppGUI._rememberLastSession && !nppGUI._isCmdlineNosessionActivated)
|
|
|
|
|
_notepad_plus_plus_core.loadLastSession();
|
|
|
|
|
|
|
|
|
|
// 导出功能列表或打印并退出
|
|
|
|
|
if (nppParams.doFunctionListExport() || nppParams.doPrintAndExit())
|
|
|
|
|
{
|
|
|
|
|
::ShowWindow(_hSelf, SW_HIDE);
|
|
|
|
@ -188,66 +211,60 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// 加载托盘图标
|
|
|
|
|
HICON icon = nullptr;
|
|
|
|
|
loadTrayIcon(_hInst, &icon);
|
|
|
|
|
_notepad_plus_plus_core._pTrayIco = new trayIconControler(_hSelf, IDI_M30ICON, NPPM_INTERNAL_MINIMIZED_TRAY, icon, TEXT(""));
|
|
|
|
|
_notepad_plus_plus_core._pTrayIco->doTrayIcon(ADD);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(cmdLineParams->isPointValid() && NppDarkMode::isEnabled())
|
|
|
|
|
setStartupBgColor(NppDarkMode::getBackgroundColor()); //draw dark background when opening Npp through cmd with position data
|
|
|
|
|
// 根据命令行参数和暗黑模式设置启动背景颜色
|
|
|
|
|
if (cmdLineParams->isPointValid() && NppDarkMode::isEnabled())
|
|
|
|
|
setStartupBgColor(NppDarkMode::getBackgroundColor());
|
|
|
|
|
|
|
|
|
|
// 加载本地化文件
|
|
|
|
|
std::vector<generic_string> fileNames;
|
|
|
|
|
std::vector<generic_string> patterns;
|
|
|
|
|
patterns.push_back(TEXT("*.xml"));
|
|
|
|
|
|
|
|
|
|
generic_string nppDir = nppParams.getNppPath();
|
|
|
|
|
|
|
|
|
|
LocalizationSwitcher & localizationSwitcher = nppParams.getLocalizationSwitcher();
|
|
|
|
|
LocalizationSwitcher& localizationSwitcher = nppParams.getLocalizationSwitcher();
|
|
|
|
|
std::wstring localizationDir = nppDir;
|
|
|
|
|
pathAppend(localizationDir, TEXT("localization\\"));
|
|
|
|
|
|
|
|
|
|
_notepad_plus_plus_core.getMatchedFileNames(localizationDir.c_str(), 0, patterns, fileNames, false, false);
|
|
|
|
|
for (size_t i = 0, len = fileNames.size(); i < len; ++i)
|
|
|
|
|
localizationSwitcher.addLanguageFromXml(fileNames[i]);
|
|
|
|
|
|
|
|
|
|
// 加载主题文件
|
|
|
|
|
fileNames.clear();
|
|
|
|
|
ThemeSwitcher & themeSwitcher = nppParams.getThemeSwitcher();
|
|
|
|
|
|
|
|
|
|
// Get themes from both npp install themes dir and app data themes dir with the per user
|
|
|
|
|
// overriding default themes of the same name.
|
|
|
|
|
|
|
|
|
|
ThemeSwitcher& themeSwitcher = nppParams.getThemeSwitcher();
|
|
|
|
|
// 获取应用数据主题目录
|
|
|
|
|
generic_string appDataThemeDir = nppParams.isCloud() ? nppParams.getUserPath() : nppParams.getAppDataNppDir();
|
|
|
|
|
if (!appDataThemeDir.empty())
|
|
|
|
|
{
|
|
|
|
|
pathAppend(appDataThemeDir, TEXT("themes\\"));
|
|
|
|
|
_notepad_plus_plus_core.getMatchedFileNames(appDataThemeDir.c_str(), 0, patterns, fileNames, false, false);
|
|
|
|
|
for (size_t i = 0, len = fileNames.size() ; i < len ; ++i)
|
|
|
|
|
for (size_t i = 0, len = fileNames.size(); i < len; ++i)
|
|
|
|
|
{
|
|
|
|
|
themeSwitcher.addThemeFromXml(fileNames[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 加载主题文件
|
|
|
|
|
fileNames.clear();
|
|
|
|
|
|
|
|
|
|
generic_string nppThemeDir = nppDir.c_str(); // <- should use the pointer to avoid the constructor of copy
|
|
|
|
|
generic_string nppThemeDir = nppDir.c_str();
|
|
|
|
|
pathAppend(nppThemeDir, TEXT("themes\\"));
|
|
|
|
|
|
|
|
|
|
// Set theme directory to their installation directory
|
|
|
|
|
themeSwitcher.setThemeDirPath(nppThemeDir);
|
|
|
|
|
|
|
|
|
|
_notepad_plus_plus_core.getMatchedFileNames(nppThemeDir.c_str(), 0, patterns, fileNames, false, false);
|
|
|
|
|
for (size_t i = 0, len = fileNames.size(); i < len ; ++i)
|
|
|
|
|
for (size_t i = 0, len = fileNames.size(); i < len; ++i)
|
|
|
|
|
{
|
|
|
|
|
generic_string themeName( themeSwitcher.getThemeFromXmlFileName(fileNames[i].c_str()) );
|
|
|
|
|
generic_string themeName(themeSwitcher.getThemeFromXmlFileName(fileNames[i].c_str()));
|
|
|
|
|
if (!themeSwitcher.themeNameExists(themeName.c_str()))
|
|
|
|
|
{
|
|
|
|
|
themeSwitcher.addThemeFromXml(fileNames[i]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!appDataThemeDir.empty())
|
|
|
|
|
{
|
|
|
|
|
generic_string appDataThemePath = appDataThemeDir;
|
|
|
|
|
|
|
|
|
|
if (!::PathFileExists(appDataThemePath.c_str()))
|
|
|
|
|
{
|
|
|
|
|
::CreateDirectory(appDataThemePath.c_str(), NULL);
|
|
|
|
@ -260,6 +277,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据暗黑模式设置主题
|
|
|
|
|
if (NppDarkMode::isWindowsModeEnabled())
|
|
|
|
|
{
|
|
|
|
|
generic_string themePath;
|
|
|
|
@ -293,36 +311,44 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Restore all dockable panels from the last session
|
|
|
|
|
for (size_t i = 0, len = _notepad_plus_plus_core._internalFuncIDs.size() ; i < len ; ++i)
|
|
|
|
|
// 恢复上次会话的情况
|
|
|
|
|
for (size_t i = 0, len = _notepad_plus_plus_core._internalFuncIDs.size(); i < len; ++i)
|
|
|
|
|
::SendMessage(_hSelf, WM_COMMAND, _notepad_plus_plus_core._internalFuncIDs[i], 0);
|
|
|
|
|
|
|
|
|
|
// 加载命令行参数中的文件
|
|
|
|
|
std::vector<generic_string> fns;
|
|
|
|
|
if (cmdLine)
|
|
|
|
|
fns = _notepad_plus_plus_core.loadCommandlineParams(cmdLine, cmdLineParams);
|
|
|
|
|
|
|
|
|
|
// Launch folder as workspace after all this dockable panel being restored from the last session
|
|
|
|
|
// To avoid dockable panel toggle problem.
|
|
|
|
|
if (cmdLineParams->_openFoldersAsWorkspace)
|
|
|
|
|
bool isSnapshotMode = nppGUI.isSnapshotMode();
|
|
|
|
|
if (isSnapshotMode)
|
|
|
|
|
{
|
|
|
|
|
generic_string emptyStr;
|
|
|
|
|
_notepad_plus_plus_core.launchFileBrowser(fns, emptyStr, true);
|
|
|
|
|
_notepad_plus_plus_core.checkModifiedDocument(false);
|
|
|
|
|
_notepad_plus_plus_core.launchDocumentBackupTask();
|
|
|
|
|
}
|
|
|
|
|
::SendMessage(_hSelf, WM_ACTIVATE, WA_ACTIVE, 0);
|
|
|
|
|
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_CRLFFORMCHANGED, 0, 0);
|
|
|
|
|
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_NPCFORMCHANGED, 0, 0);
|
|
|
|
|
// 设置单词字符和 NPC
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_SETWORDCHARS, 0, 0);
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_SETNPC, 0, 0);
|
|
|
|
|
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_ENABLECHANGEHISTORY, 0, 0);
|
|
|
|
|
// 导出功能列表
|
|
|
|
|
if (nppParams.doFunctionListExport())
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_EXPORTFUNCLISTANDQUIT, 0, 0);
|
|
|
|
|
|
|
|
|
|
// 打印
|
|
|
|
|
if (nppParams.doPrintAndExit())
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_PRNTANDQUIT, 0, 0);
|
|
|
|
|
|
|
|
|
|
if (nppGUI._newDocDefaultSettings._addNewDocumentOnStartup && nppGUI._rememberLastSession)
|
|
|
|
|
// 计算加载时间并显示消息框
|
|
|
|
|
if (cmdLineParams->_showLoadingTime)
|
|
|
|
|
{
|
|
|
|
|
::SendMessage(_hSelf, WM_COMMAND, IDM_FILE_NEW, 0);
|
|
|
|
|
time_t timestampEnd = time(NULL);
|
|
|
|
|
double loadTime = difftime(timestampEnd, timestampBegin);
|
|
|
|
|
char dest[256];
|
|
|
|
|
sprintf(dest, "Loading time : %.0lf seconds", loadTime);
|
|
|
|
|
::MessageBoxA(NULL, dest, "", MB_OK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Notify plugins that Notepad++ is ready
|
|
|
|
|
SCNotification scnN{};
|
|
|
|
|
scnN.nmhdr.code = NPPN_READY;
|
|
|
|
|
scnN.nmhdr.hwndFrom = _hSelf;
|
|
|
|
@ -353,10 +379,9 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
_quoteParams._speed = QuoteParams::rapid;
|
|
|
|
|
else if (cmdLineParams->_ghostTypingSpeed == 3)
|
|
|
|
|
_quoteParams._speed = QuoteParams::speedOfLight;
|
|
|
|
|
|
|
|
|
|
_notepad_plus_plus_core.showQuote(&_quoteParams);
|
|
|
|
|
}
|
|
|
|
|
else if (cmdLineParams->_quoteType == 2) // content drom file
|
|
|
|
|
else if (cmdLineParams->_quoteType == 2) // content from file
|
|
|
|
|
{
|
|
|
|
|
if (::PathFileExists(cmdLineParams->_easterEggName.c_str()))
|
|
|
|
|
{
|
|
|
|
@ -376,43 +401,18 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|
|
|
|
_quoteParams._speed = QuoteParams::rapid;
|
|
|
|
|
else if (cmdLineParams->_ghostTypingSpeed == 3)
|
|
|
|
|
_quoteParams._speed = QuoteParams::speedOfLight;
|
|
|
|
|
|
|
|
|
|
_notepad_plus_plus_core.showQuote(&_quoteParams);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (cmdLineParams->_showLoadingTime)
|
|
|
|
|
{
|
|
|
|
|
time_t timestampEnd = time(NULL);
|
|
|
|
|
double loadTime = difftime(timestampEnd, timestampBegin);
|
|
|
|
|
|
|
|
|
|
char dest[256];
|
|
|
|
|
sprintf(dest, "Loading time : %.0lf seconds", loadTime);
|
|
|
|
|
::MessageBoxA(NULL, dest, "", MB_OK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool isSnapshotMode = nppGUI.isSnapshotMode();
|
|
|
|
|
if (isSnapshotMode)
|
|
|
|
|
{
|
|
|
|
|
_notepad_plus_plus_core.checkModifiedDocument(false);
|
|
|
|
|
// Lauch backup task
|
|
|
|
|
_notepad_plus_plus_core.launchDocumentBackupTask();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Make this call later to take effect
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_SETWORDCHARS, 0, 0);
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_SETNPC, 0, 0);
|
|
|
|
|
|
|
|
|
|
if (nppParams.doFunctionListExport())
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_EXPORTFUNCLISTANDQUIT, 0, 0);
|
|
|
|
|
|
|
|
|
|
if (nppParams.doPrintAndExit())
|
|
|
|
|
::SendMessage(_hSelf, NPPM_INTERNAL_PRNTANDQUIT, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用于检查MSG类型的变量msg是否是一种特定的消息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="msg"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
bool Notepad_plus_Window::isDlgsMsg(MSG *msg) const
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0, len = _notepad_plus_plus_core._hModelessDlgs.size(); i < len; ++i)
|
|
|
|
|