bool CMainWindow::Initialize() { m_hWndEdit = ::CreateWindow( L"Scintilla", L"Source", WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, *this, 0, hResource, 0); if (m_hWndEdit == NULL) return false; RECT rect; GetClientRect(*this, &rect); ::SetWindowPos(m_hWndEdit, HWND_TOP, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, SWP_SHOWWINDOW); m_directFunction = SendMessage(m_hWndEdit, SCI_GETDIRECTFUNCTION, 0, 0); m_directPointer = SendMessage(m_hWndEdit, SCI_GETDIRECTPOINTER, 0, 0); // Set up the global default style. These attributes are used wherever no explicit choices are made. CRegStdDWORD used2d(L"Software\\TortoiseSVN\\ScintillaDirect2D", TRUE); bool enabled2d = false; if (IsWindows7OrGreater() && DWORD(used2d)) enabled2d = true; std::wstring fontNameW = CRegStdString(L"Software\\TortoiseSVN\\UDiffFontName", L"Consolas"); std::string fontName; fontName = CUnicodeUtils::StdGetUTF8(fontNameW); SetAStyle(STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_WINDOW), CRegStdDWORD(L"Software\\TortoiseSVN\\UDiffFontSize", 10), fontName.c_str()); SendEditor(SCI_SETTABWIDTH, CRegStdDWORD(L"Software\\TortoiseSVN\\UDiffTabSize", 4)); SendEditor(SCI_SETREADONLY, TRUE); LRESULT pix = SendEditor(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"_99999"); SendEditor(SCI_SETMARGINWIDTHN, 0, pix); SendEditor(SCI_SETMARGINWIDTHN, 1); SendEditor(SCI_SETMARGINWIDTHN, 2); //Set the default windows colors for edit controls SendEditor(SCI_STYLESETFORE, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT)); SendEditor(SCI_STYLESETBACK, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOW)); SendEditor(SCI_SETSELFORE, TRUE, ::GetSysColor(COLOR_HIGHLIGHTTEXT)); SendEditor(SCI_SETSELBACK, TRUE, ::GetSysColor(COLOR_HIGHLIGHT)); SendEditor(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT)); if (enabled2d) { SendEditor(SCI_SETTECHNOLOGY, SC_TECHNOLOGY_DIRECTWRITERETAIN); SendEditor(SCI_SETBUFFEREDDRAW, 0); } SendEditor(SCI_SETVIEWWS, 1); SendEditor(SCI_SETWHITESPACESIZE, 2); SendEditor(SCI_SETWHITESPACEFORE, true, ::GetSysColor(COLOR_3DSHADOW)); SendEditor(SCI_STYLESETVISIBLE, STYLE_CONTROLCHAR, TRUE); return true; }
bool CMainWindow::Initialize() { m_hWndEdit = ::CreateWindow( _T("Scintilla"), _T("Source"), WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, *this, 0, hResource, 0); if (m_hWndEdit == NULL) return false; RECT rect; GetClientRect(*this, &rect); ::SetWindowPos(m_hWndEdit, HWND_TOP, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, SWP_SHOWWINDOW); m_directFunction = SendMessage(m_hWndEdit, SCI_GETDIRECTFUNCTION, 0, 0); m_directPointer = SendMessage(m_hWndEdit, SCI_GETDIRECTPOINTER, 0, 0); // Set up the global default style. These attributes are used wherever no explicit choices are made. SetAStyle(STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_WINDOW), // Reusing TortoiseBlame's setting which already have an user friendly // pane in TortoiseSVN's Settings dialog, while there is no such // pane for TortoiseUDiff. CRegStdDWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10), CUnicodeUtils::StdGetUTF8(CRegStdString(_T("Software\\TortoiseGit\\BlameFontName"), _T("Courier New"))).c_str()); SendEditor(SCI_SETTABWIDTH, 4); SendEditor(SCI_SETREADONLY, TRUE); LRESULT pix = SendEditor(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"_99999"); SendEditor(SCI_SETMARGINWIDTHN, 0, pix); SendEditor(SCI_SETMARGINWIDTHN, 1); SendEditor(SCI_SETMARGINWIDTHN, 2); //Set the default windows colors for edit controls SendEditor(SCI_STYLESETFORE, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT)); SendEditor(SCI_STYLESETBACK, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOW)); SendEditor(SCI_SETSELFORE, TRUE, ::GetSysColor(COLOR_HIGHLIGHTTEXT)); SendEditor(SCI_SETSELBACK, TRUE, ::GetSysColor(COLOR_HIGHLIGHT)); SendEditor(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT)); CRegStdDWORD used2d(L"Software\\TortoiseGit\\ScintillaDirect2D", FALSE); if (SysInfo::Instance().IsWin7OrLater() && DWORD(used2d)) { SendEditor(SCI_SETTECHNOLOGY, SC_TECHNOLOGY_DIRECTWRITE); SendEditor(SCI_SETBUFFEREDDRAW, 0); } SendEditor(SCI_SETVIEWWS, 1); SendEditor(SCI_SETWHITESPACESIZE, 2); SendEditor(SCI_SETWHITESPACEFORE, true, ::GetSysColor(COLOR_3DSHADOW)); SendEditor(SCI_STYLESETVISIBLE, STYLE_CONTROLCHAR, TRUE); return true; }