+ chg: minor changes for dialog handling on DPI changed

This commit is contained in:
RaiKoHoff 2020-05-08 15:39:16 +02:00
parent 5f71449131
commit 962d6ec2da
9 changed files with 118 additions and 159 deletions

View File

@ -30,3 +30,6 @@ charset = utf-8
indent_style = space
indent_size = 4
tab_width = 4
[language/common_res.rc]
charset = latin1

View File

@ -37,10 +37,10 @@ IDI_GREPWIN ICON "grepWinNP3.ico"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
// Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
@ -401,15 +401,15 @@ BEGIN
IDS_ERR_PATHNOTEXIST "Path does not exist or is not accessible!"
END
#endif // English (United States) resources
#endif // Neutral resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// German (Switzerland) resources
// Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DES)
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_SWISS
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252)
#ifdef APSTUDIO_INVOKED
@ -441,7 +441,7 @@ END
#endif // APSTUDIO_INVOKED
#endif // German (Switzerland) resources
#endif // Neutral resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -1,8 +1,7 @@
/////////////////////////////////////////////////////////////////////////////
// Language independant string resources
/////////////////////////////////////////////////////////////////////////////
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
// encoding: CP-1252
#include "common_res.h"
#define APSTUDIO_READONLY_SYMBOLS
@ -15,6 +14,7 @@
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
@ -69,6 +69,12 @@ IDR_RIZBITMAP BITMAP "rizonesoft.bmp"
IDC_COPY CURSOR "Copy.cur"
// =============================================================================
// Following Text is streamed to RichEdit Control supporting ANSI CP-1252 only
// Unicode characters have to be encoded using '\\uN<ch>' squences.
// Example: Küng => K\\u252üng
// =============================================================================
STRINGTABLE
BEGIN
@ -95,7 +101,7 @@ IDS_MUI_ABOUT_CONTRIBS "\
IDS_MUI_ABOUT_LIBS "\
\\cf0 N.Hodgson (Scintilla)\\tab https://www.scintilla.org/\\par\
\\cf0 K.Kosako (Oniguruma Regex)\\tab https://github.com/kkos/oniguruma/\\par\
\\cf0 Stefan Küng (grepWin)\\tab https://github.com/stefankueng/grepWin/\\par\
\\cf0 Stefan K\\u252üng (grepWin)\\tab https://github.com/stefankueng/grepWin/\\par\
\\cf0 D.Dyer (NotepadCrypt)\\tab https://www.real-me.net/ddyer/notepad/NotepadCrypt.html\\par\
\\cf0 T.D.Hanson (uthash)\\tab https://troydhanson.github.io/uthash/\\par\
\\cf0 Carbo Kuo (Mozilla's uchardet)\\tab https://www.freedesktop.org/wiki/Software/uchardet/\\par\
@ -189,7 +195,6 @@ IDS_MUI_ABOUT_RTF_6 "\
END
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//

View File

@ -324,7 +324,7 @@ BEGIN
DEFPUSHBUTTON "OK",IDOK,355,233,50,14
PUSHBUTTON "Cancel",IDCANCEL,410,233,50,14
EDITTEXT IDC_STYLEEDIT_HELP,197,54,252,74,ES_MULTILINE | ES_READONLY | NOT WS_BORDER
SCROLLBAR IDC_RESIZEGRIP,7,233,10,10
//@@@SCROLLBAR IDC_RESIZEGRIP,7,233,10,10
END
IDD_MUI_TABSETTINGS DIALOGEX 0, 0, 174, 114

View File

@ -3548,9 +3548,11 @@ void Platform_Finalise(bool fromDllMain) noexcept {
//
#ifdef _WIN64
typedef INT_PTR(FAR WINAPI* FARPROCHWND)(HWND);
typedef INT_PTR(FAR WINAPI* FARPROCDPI)(int, UINT);
typedef INT_PTR(FAR WINAPI* FARPROCMONI)(HMONITOR, int, UINT*, UINT*);
#else
typedef int (FAR WINAPI* FARPROCHWND)(HWND);
typedef int (FAR WINAPI* FARPROCHDPI)(int, UINT);
typedef int (FAR WINAPI* FARPROCMONI)(HMONITOR, int, UINT*, UINT*);
#endif // _WIN64
@ -3561,7 +3563,7 @@ DPI_T GetCurrentDPI(HWND hwnd) {
if (IsWindows10OrGreater()) {
static HMODULE hModule = nullptr;
if (!hModule) { hModule = GetModuleHandle(L"user32.dll"); }
if (!hModule) { hModule = GetModuleHandle(L"User32.dll"); }
if (hModule) {
FARPROCHWND const pfnGetDpiForWindow = (FARPROCHWND)GetProcAddress(hModule, "GetDpiForWindow");
if (pfnGetDpiForWindow) {
@ -3606,7 +3608,18 @@ DPI_T GetCurrentDPI(HWND hwnd) {
//
int GetSystemMetricsEx(HWND hwnd, int nIndex)
{
if (IsWindows10OrGreater()) {
static HMODULE hModule = nullptr;
if (!hModule) { hModule = GetModuleHandle(L"User32.dll"); }
if (hModule) {
FARPROCHWND const pfnGetDpiForWindow = (FARPROCHWND)GetProcAddress(hModule, "GetDpiForWindow");
FARPROCDPI const pfnGetSystemMetricsForDpi = (FARPROCDPI)GetProcAddress(hModule, "GetSystemMetricsForDpi");
if (pfnGetDpiForWindow && pfnGetSystemMetricsForDpi) {
return (int)pfnGetSystemMetricsForDpi(nIndex, (UINT)pfnGetDpiForWindow(hwnd));
}
}
}
return ScaleIntToDPI_Y(hwnd, GetSystemMetrics(nIndex));
}
}
} // namespace Scintilla

View File

@ -668,8 +668,9 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETEVENTMASK, 0, (LPARAM)(ENM_LINK)); // link click
char pAboutRes[4096];
StringCchCopyA(pAboutResource, COUNTOF(pAboutResource), "");
GetLngStringA(IDS_MUI_ABOUT_RTF_0, pAboutRes, COUNTOF(pAboutRes));
StringCchCopyA(pAboutResource, COUNTOF(pAboutResource), pAboutRes);
StringCchCatA(pAboutResource, COUNTOF(pAboutResource), pAboutRes);
GetLngStringA(IDS_MUI_ABOUT_DEV, pAboutRes, COUNTOF(pAboutRes));
StringCchCatA(pAboutResource, COUNTOF(pAboutResource), pAboutRes);
GetLngStringA(IDS_MUI_ABOUT_RTF_1, pAboutRes, COUNTOF(pAboutRes));
@ -710,7 +711,7 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam
if (hVersionFont) { DeleteObject(hVersionFont); }
break;
case WM_SIZE:
case WM_DPICHANGED:
{
UpdateWindowLayoutForDPI(hwnd, 0, 0, 0, 0);
@ -1121,12 +1122,10 @@ static INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM
case WM_SIZE:
{
int dx;
int dy;
HDWP hdwp;
int dx, dy;
ResizeDlg_Size(hwnd,lParam,&dx,&dy);
HDWP hdwp;
hdwp = BeginDeferWindowPos(6);
hdwp = DeferCtlPos(hdwp,hwnd,IDC_RESIZEGRIP,dx,dy,SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp,hwnd,IDOK,dx,dy,SWP_NOSIZE);
@ -1138,12 +1137,12 @@ static INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM
ListView_SetColumnWidth(GetDlgItem(hwnd,IDC_OPENWITHDIR),0,LVSCW_AUTOSIZE_USEHEADER);
}
return true;
return !0;
case WM_GETMINMAXINFO:
ResizeDlg_GetMinMaxInfo(hwnd,lParam);
return true;
return !0;
case WM_NOTIFY:
@ -1321,12 +1320,10 @@ static INT_PTR CALLBACK FavoritesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
case WM_SIZE:
{
int dx;
int dy;
HDWP hdwp;
int dx, dy;
ResizeDlg_Size(hwnd,lParam,&dx,&dy);
HDWP hdwp;
hdwp = BeginDeferWindowPos(6);
hdwp = DeferCtlPos(hdwp,hwnd,IDC_RESIZEGRIP,dx,dy,SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp,hwnd,IDOK,dx,dy,SWP_NOSIZE);
@ -3965,7 +3962,7 @@ typedef const RESIZEDLG* LPCRESIZEDLG;
void ResizeDlg_InitEx(HWND hwnd, int cxFrame, int cyFrame, int nIdGrip, int iDirection)
{
RESIZEDLG* pm = (RESIZEDLG*)AllocMem(sizeof(RESIZEDLG), HEAP_ZERO_MEMORY);
RESIZEDLG* const pm = (RESIZEDLG*)AllocMem(sizeof(RESIZEDLG), HEAP_ZERO_MEMORY);
pm->direction = iDirection;
RECT rc;
@ -3976,12 +3973,12 @@ void ResizeDlg_InitEx(HWND hwnd, int cxFrame, int cyFrame, int nIdGrip, int iDir
AdjustWindowRectEx(&rc, GetWindowLong(hwnd, GWL_STYLE) | WS_THICKFRAME, FALSE, 0);
pm->mmiPtMinX = rc.right - rc.left;
pm->mmiPtMinY = rc.bottom - rc.top;
// only one direction
switch (iDirection) {
case ResizeDlgDirection_OnlyX:
pm->mmiPtMaxY = pm->mmiPtMinY;
break;
case ResizeDlgDirection_OnlyY:
pm->mmiPtMaxX = pm->mmiPtMinX;
break;
@ -3997,30 +3994,31 @@ void ResizeDlg_InitEx(HWND hwnd, int cxFrame, int cyFrame, int nIdGrip, int iDir
SetWindowLongPtr(hwnd, GWL_STYLE, GetWindowLongPtr(hwnd, GWL_STYLE) | WS_THICKFRAME);
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
WCHAR wch[64];
WCHAR wch[MAX_PATH];
GetMenuString(GetSystemMenu(GetParent(hwnd), FALSE), SC_SIZE, wch, COUNTOF(wch), MF_BYCOMMAND);
InsertMenu(GetSystemMenu(hwnd, FALSE), SC_CLOSE, MF_BYCOMMAND | MF_STRING | MF_ENABLED, SC_SIZE, wch);
InsertMenu(GetSystemMenu(hwnd, FALSE), SC_CLOSE, MF_BYCOMMAND | MF_SEPARATOR, 0, NULL);
HWND hwndCtl = GetDlgItem(hwnd, nIdGrip);
HWND const hwndCtl = GetDlgItem(hwnd, nIdGrip);
SetWindowLongPtr(hwndCtl, GWL_STYLE, GetWindowLongPtr(hwndCtl, GWL_STYLE) | SBS_SIZEGRIP | WS_CLIPSIBLINGS);
/// TODO: per-window DPI
const int cGrip = Scintilla_GetSystemMetricsEx(hwnd, SM_CXHTHUMB);
SetWindowPos(hwndCtl, NULL, pm->cxClient - cGrip, pm->cyClient - cGrip, cGrip, cGrip, SWP_NOZORDER);
}
void ResizeDlg_Destroy(HWND hwnd, int* cxFrame, int* cyFrame) {
PRESIZEDLG pm = (PRESIZEDLG)GetProp(hwnd, RESIZEDLG_PROP_KEY);
void ResizeDlg_Destroy(HWND hwnd, int* cxFrame, int* cyFrame)
{
PRESIZEDLG const pm = (PRESIZEDLG)GetProp(hwnd, RESIZEDLG_PROP_KEY);
RECT rc;
GetWindowRect(hwnd, &rc);
if (cxFrame) {
*cxFrame = rc.right - rc.left;
*cxFrame = (rc.right - rc.left);
}
if (cyFrame) {
*cyFrame = rc.bottom - rc.top;
*cyFrame = (rc.bottom - rc.top);
}
RemoveProp(hwnd, RESIZEDLG_PROP_KEY);
FreeMem(pm);
}
@ -4040,7 +4038,8 @@ void ResizeDlg_Size(HWND hwnd, LPARAM lParam, int* cx, int* cy)
pm->cyClient = cyClient;
}
void ResizeDlg_GetMinMaxInfo(HWND hwnd, LPARAM lParam) {
void ResizeDlg_GetMinMaxInfo(HWND hwnd, LPARAM lParam)
{
LPCRESIZEDLG pm = (LPCRESIZEDLG)GetProp(hwnd, RESIZEDLG_PROP_KEY);
LPMINMAXINFO lpmmi = (LPMINMAXINFO)lParam;
@ -4071,7 +4070,6 @@ int ResizeDlg_GetAttr(HWND hwnd, int index) {
const LPCRESIZEDLG pm = (LPCRESIZEDLG)GetProp(hwnd, RESIZEDLG_PROP_KEY);
return pm->attrs[index];
}
return 0;
}
@ -4083,7 +4081,7 @@ static inline int GetDlgCtlHeight(HWND hwndDlg, int nCtlId) {
}
void ResizeDlgCtl(HWND hwndDlg, int nCtlId, int dx, int dy) {
HWND hwndCtl = GetDlgItem(hwndDlg, nCtlId);
HWND const hwndCtl = GetDlgItem(hwndDlg, nCtlId);
RECT rc;
GetWindowRect(hwndCtl, &rc);
MapWindowPoints(NULL, hwndDlg, (LPPOINT)& rc, 2);
@ -4093,7 +4091,7 @@ void ResizeDlgCtl(HWND hwndDlg, int nCtlId, int dx, int dy) {
HDWP DeferCtlPos(HDWP hdwp, HWND hwndDlg, int nCtlId, int dx, int dy, UINT uFlags) {
HWND hwndCtl = GetDlgItem(hwndDlg, nCtlId);
HWND const hwndCtl = GetDlgItem(hwndDlg, nCtlId);
RECT rc;
GetWindowRect(hwndCtl, &rc);
MapWindowPoints(NULL, hwndDlg, (LPPOINT)& rc, 2);
@ -4524,19 +4522,18 @@ if (!bSucceed) {
//
void UpdateWindowLayoutForDPI(HWND hWnd, int x_96dpi, int y_96dpi, int w_96dpi, int h_96dpi)
{
#if TRUE
#if FALSE
// only update yet
SetWindowPos(hWnd, hWnd, x_96dpi, y_96dpi, w_96dpi, h_96dpi,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION);
#else
//@@@ TODO: ???
UNUSED(x_96dpi);
UNUSED(y_96dpi);
UNUSED(w_96dpi);
UNUSED(h_96dpi);
DPI_T const wndDPI = GetCurrentDPI(hWnd);
DPI_T const wndDPI = Scintilla_GetCurrentDPI(hWnd);
RECT rc;
GetWindowRect(hWnd, &rc);
@ -4549,7 +4546,8 @@ void UpdateWindowLayoutForDPI(HWND hWnd, int x_96dpi, int y_96dpi, int w_96dpi,
int dpiScaledHeight = MulDiv(height, wndDPI.y, USER_DEFAULT_SCREEN_DPI);
SetWindowPos(hWnd, NULL, dpiScaledX, dpiScaledY, dpiScaledWidth, dpiScaledHeight,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION);
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION | SWP_FRAMECHANGED);
InvalidateRect(hWnd, NULL, TRUE);
#endif

View File

@ -91,8 +91,8 @@ void EditEnsureConsistentLineEndings(HWND hwnd);
void EditGetExcerpt(HWND hwnd,LPWSTR lpszExcerpt,DWORD cchExcerpt);
HWND EditFindReplaceDlg(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool);
bool EditFindNext(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool,bool);
bool EditFindPrev(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool,bool);
bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd);
bool EditFindPrev(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd);
bool EditReplace(HWND hwnd,LPCEDITFINDREPLACE lpefr);
int EditReplaceAllInRange(HWND hwnd,LPCEDITFINDREPLACE lpefr,DocPos iStartPos,DocPos iEndPos,DocPos* enlargement);
bool EditReplaceAll(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool);

View File

@ -4942,11 +4942,11 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
}
SciCall_GetSelText(szSelection);
SetFindReplaceData(); // s_FindReplaceData
SetFindPatternMB(szSelection);
MRU_Add(Globals.pMRUfind, GetFindPattern(), 0, -1, -1, NULL);
SetFindReplaceData(); // s_FindReplaceData
StringCchCopyA(s_FindReplaceData.szFind, COUNTOF(s_FindReplaceData.szFind), szSelection);
s_FindReplaceData.fuFlags &= (~(SCFIND_REGEXP | SCFIND_POSIX));
s_FindReplaceData.bTransformBS = false;

View File

@ -603,7 +603,6 @@ bool Style_ImportFromFile(const WCHAR* szFile)
s_cxStyleSelectDlg = clampi(IniSectionGetInt(IniSecStyles, L"SelectDlgSizeX", STYLESELECTDLG_X), 0, 8192);
s_cyStyleSelectDlg = clampi(IniSectionGetInt(IniSecStyles, L"SelectDlgSizeY", STYLESELECTDLG_Y), 0, 8192);
// Lexer
for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++) {
@ -3891,11 +3890,7 @@ INT_PTR CALLBACK Style_CustomizeSchemesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
case WM_ACTIVATE:
DialogEnableControl(hwnd, IDC_PREVIEW, ((pCurrentLexer == s_pLexCurrent) || (pCurrentLexer == GetCurrentStdLexer())));
return true;
case WM_DPICHANGED:
UpdateWindowLayoutForDPI(hwnd, 0, 0, 0, 0);
return true;
return !0;
case WM_DESTROY:
{
@ -3929,19 +3924,12 @@ INT_PTR CALLBACK Style_CustomizeSchemesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
}
return false;
case WM_SIZE:
case WM_DPICHANGED:
UpdateWindowLayoutForDPI(hwnd, 0, 0, 0, 0);
return !0;
case WM_SYSCOMMAND:
if (wParam == IDS_MUI_SAVEPOS) {
PostWMCommand(hwnd, IDACC_SAVEPOS);
return true;
}
else if (wParam == IDS_MUI_RESETPOS) {
PostWMCommand(hwnd, IDACC_RESETPOS);
return true;
}
else
return false;
#if 0
case WM_SIZE:
{
int dx;
@ -3970,12 +3958,25 @@ INT_PTR CALLBACK Style_CustomizeSchemesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
hdwp = DeferCtlPos(hdwp, hwnd, IDC_STYLEEDIT_HELP, dx, dy, SWP_NOSIZE);
EndDeferWindowPos(hdwp);
}
return TRUE;
return !0;
#endif
case WM_GETMINMAXINFO:
ResizeDlg_GetMinMaxInfo(hwnd, lParam);
return TRUE;
return !0;
case WM_SYSCOMMAND:
if (wParam == IDS_MUI_SAVEPOS) {
PostWMCommand(hwnd, IDACC_SAVEPOS);
return !0;
}
else if (wParam == IDS_MUI_RESETPOS) {
PostWMCommand(hwnd, IDACC_RESETPOS);
return !0;
}
else
return 0;
case WM_NOTIFY:
@ -4466,11 +4467,8 @@ static int _s_idefaultLexer = -1;
INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
{
static int cxClient;
static int cyClient;
static int mmiPtMaxY;
static int mmiPtMinX;
static HWND hwndLV;
static int iInternalDefault;
@ -4481,53 +4479,25 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
{
SET_NP3_DLG_ICON_SMALL(hwnd);
LVCOLUMN lvc = { LVCF_FMT|LVCF_TEXT, LVCFMT_LEFT, 0, L"", -1, 0, 0, 0 };
RECT rc;
GetClientRect(hwnd,&rc);
cxClient = rc.right - rc.left;
cyClient = rc.bottom - rc.top;
AdjustWindowRectEx(&rc,GetWindowLong(hwnd,GWL_STYLE)|WS_THICKFRAME,false,0);
mmiPtMinX = rc.right-rc.left;
mmiPtMaxY = rc.bottom-rc.top;
if (s_cxStyleSelectDlg < (rc.right-rc.left))
s_cxStyleSelectDlg = rc.right-rc.left;
if (s_cyStyleSelectDlg < (rc.bottom-rc.top))
s_cyStyleSelectDlg = rc.bottom-rc.top;
SetWindowPos(hwnd,NULL,rc.left,rc.top,s_cxStyleSelectDlg,s_cyStyleSelectDlg,SWP_NOZORDER);
SetWindowLongPtr(hwnd,GWL_STYLE,GetWindowLongPtr(hwnd,GWL_STYLE)|WS_THICKFRAME);
SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED);
WCHAR tch[MAX_PATH] = { L'\0' };
GetMenuString(GetSystemMenu(GetParent(hwnd),false),SC_SIZE,tch,COUNTOF(tch),MF_BYCOMMAND);
InsertMenu(GetSystemMenu(hwnd,false),SC_CLOSE,MF_BYCOMMAND|MF_STRING|MF_ENABLED,SC_SIZE,tch);
InsertMenu(GetSystemMenu(hwnd,false),SC_CLOSE,MF_BYCOMMAND|MF_SEPARATOR,0,NULL);
SetWindowLongPtr(GetDlgItem(hwnd,IDC_RESIZEGRIP),GWL_STYLE,
GetWindowLongPtr(GetDlgItem(hwnd,IDC_RESIZEGRIP),GWL_STYLE)|SBS_SIZEGRIP|WS_CLIPSIBLINGS);
int cGrip = Scintilla_GetSystemMetricsEx(hwnd, SM_CXHTHUMB);
SetWindowPos(GetDlgItem(hwnd,IDC_RESIZEGRIP),NULL,cxClient-cGrip,
cyClient-cGrip,cGrip,cGrip,SWP_NOZORDER);
ResizeDlg_Init(hwnd, s_cxStyleSelectDlg, s_cyStyleSelectDlg, IDC_RESIZEGRIP);
hwndLV = GetDlgItem(hwnd,IDC_STYLELIST);
SHFILEINFO shfi;
ZeroMemory(&shfi, sizeof(SHFILEINFO));
ListView_SetImageList(hwndLV,
(HIMAGELIST)SHGetFileInfo(L"C:\\",FILE_ATTRIBUTE_DIRECTORY,
&shfi,sizeof(SHFILEINFO),SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES),
&shfi,sizeof(SHFILEINFO), SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES),
LVSIL_SMALL);
ListView_SetImageList(hwndLV,
(HIMAGELIST)SHGetFileInfo(L"C:\\",FILE_ATTRIBUTE_DIRECTORY,
&shfi,sizeof(SHFILEINFO),SHGFI_LARGEICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES),
&shfi,sizeof(SHFILEINFO), SHGFI_LARGEICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES),
LVSIL_NORMAL);
//SetExplorerTheme(hwndLV);
LVCOLUMN lvc = { LVCF_FMT | LVCF_TEXT, LVCFMT_LEFT, 0, L"", -1, 0, 0, 0 };
ListView_SetExtendedListViewStyle(hwndLV,/*LVS_EX_FULLROWSELECT|*/LVS_EX_DOUBLEBUFFER|LVS_EX_LABELTIP);
ListView_InsertColumn(hwndLV,0,&lvc);
@ -4563,71 +4533,41 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
case WM_DPICHANGED:
UpdateWindowLayoutForDPI(hwnd, 0, 0, 0, 0);
{
UpdateWindowLayoutForDPI(hwnd, 0, 0, 0, 0);
}
return !0;
case WM_DESTROY:
{
RECT rc;
GetWindowRect(hwnd,&rc);
s_cxStyleSelectDlg = rc.right-rc.left;
s_cyStyleSelectDlg = rc.bottom-rc.top;
ResizeDlg_Destroy(hwnd, &s_cxStyleSelectDlg, &s_cyStyleSelectDlg);
}
return 0;
case WM_SIZE:
{
RECT rc;
ResizeDlg_Size(hwnd, lParam, &cxClient, &cyClient);
int dxClient = LOWORD(lParam) - cxClient;
int dyClient = HIWORD(lParam) - cyClient;
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
GetWindowRect(GetDlgItem(hwnd,IDC_RESIZEGRIP),&rc);
MapWindowPoints(NULL,hwnd,(LPPOINT)&rc,2);
SetWindowPos(GetDlgItem(hwnd,IDC_RESIZEGRIP),NULL,rc.left+dxClient,rc.top+dyClient,0,0,SWP_NOZORDER|SWP_NOSIZE);
InvalidateRect(GetDlgItem(hwnd,IDC_RESIZEGRIP),NULL,true);
GetWindowRect(GetDlgItem(hwnd,IDOK),&rc);
MapWindowPoints(NULL,hwnd,(LPPOINT)&rc,2);
SetWindowPos(GetDlgItem(hwnd,IDOK),NULL,rc.left+dxClient,rc.top+dyClient,0,0,SWP_NOZORDER|SWP_NOSIZE);
InvalidateRect(GetDlgItem(hwnd,IDOK),NULL,true);
GetWindowRect(GetDlgItem(hwnd,IDCANCEL),&rc);
MapWindowPoints(NULL,hwnd,(LPPOINT)&rc,2);
SetWindowPos(GetDlgItem(hwnd,IDCANCEL),NULL,rc.left+dxClient,rc.top+dyClient,0,0,SWP_NOZORDER|SWP_NOSIZE);
InvalidateRect(GetDlgItem(hwnd,IDCANCEL),NULL,true);
GetWindowRect(GetDlgItem(hwnd,IDC_STYLELIST),&rc);
MapWindowPoints(NULL,hwnd,(LPPOINT)&rc,2);
SetWindowPos(GetDlgItem(hwnd,IDC_STYLELIST),NULL,0,0,rc.right-rc.left+dxClient,rc.bottom-rc.top+dyClient,SWP_NOZORDER|SWP_NOMOVE);
ListView_SetColumnWidth(GetDlgItem(hwnd,IDC_STYLELIST),0,LVSCW_AUTOSIZE_USEHEADER);
InvalidateRect(GetDlgItem(hwnd,IDC_STYLELIST),NULL,true);
GetWindowRect(GetDlgItem(hwnd,IDC_AUTOSELECT),&rc);
MapWindowPoints(NULL,hwnd,(LPPOINT)&rc,2);
SetWindowPos(GetDlgItem(hwnd,IDC_AUTOSELECT),NULL,rc.left,rc.top+dyClient,0,0,SWP_NOZORDER|SWP_NOSIZE);
InvalidateRect(GetDlgItem(hwnd,IDC_AUTOSELECT),NULL,true);
GetWindowRect(GetDlgItem(hwnd,IDC_DEFAULTSCHEME),&rc);
MapWindowPoints(NULL,hwnd,(LPPOINT)&rc,2);
SetWindowPos(GetDlgItem(hwnd,IDC_DEFAULTSCHEME),NULL,rc.left,rc.top+dyClient,0,0,SWP_NOZORDER|SWP_NOSIZE);
InvalidateRect(GetDlgItem(hwnd,IDC_DEFAULTSCHEME),NULL,true);
}
return true;
HDWP hdwp;
hdwp = BeginDeferWindowPos(6);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_RESIZEGRIP, cxClient, cyClient, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDOK, cxClient, cyClient, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDCANCEL, cxClient, cyClient, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_STYLELIST, 0, cyClient, SWP_NOMOVE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_DEFAULTSCHEME, 0, cyClient, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_AUTOSELECT, 0, cyClient, SWP_NOSIZE);
EndDeferWindowPos(hdwp);
ListView_SetColumnWidth(GetDlgItem(hwnd, IDC_STYLELIST), 0, LVSCW_AUTOSIZE_USEHEADER);
}
return !0;
case WM_GETMINMAXINFO:
{
LPMINMAXINFO lpmmi = (LPMINMAXINFO)lParam;
lpmmi->ptMinTrackSize.x = mmiPtMinX;
lpmmi->ptMinTrackSize.y = mmiPtMaxY;
//lpmmi->ptMaxTrackSize.y = mmiPtMaxY;
}
return true;
ResizeDlg_GetMinMaxInfo(hwnd, lParam);
return !0;
case WM_NOTIFY:
@ -4652,7 +4592,7 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
}
}
}
return true;
return !0;
case WM_COMMAND:
@ -4688,9 +4628,9 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
} // switch()
} // WM_COMMAND
return true;
return !0;
}
return false;
return 0;
}