Merge pull request #393 from RaiKoHoff/AboutBox_0223

New AboutBox and minor fixes
This commit is contained in:
Derick Payne 2018-02-28 11:47:18 +02:00 committed by GitHub
commit 95e75eb4f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 400 additions and 205 deletions

View File

@ -34,11 +34,15 @@ try
$Major = 3
$Minor = [int]$(Get-Date -format yy)
$Revis = [int]$(Get-Date -format MMdd)
$BetaVer = 'L" "'
$BetaVerA = '" "'
if ($AppVeyorEnv) {
$Build = [int]($env:appveyor_build_number)
}
else {
$Build = [int](Get-Content "Versions\build.txt") + 1
#$BetaVer = 'L" beta "'
#$BetaVerA = '" beta "'
}
if (!$Build) { $Build = 0 }
$SciVer = [int](Get-Content "scintilla\version.txt")
@ -56,6 +60,9 @@ try
(Get-Content "src\VersionEx.h") | ForEach-Object { $_ -replace '\$BUILD\$', "$Build" } | Set-Content "src\VersionEx.h"
(Get-Content "src\VersionEx.h") | ForEach-Object { $_ -replace '\$SCIVER\$', "$SciVer" } | Set-Content "src\VersionEx.h"
(Get-Content "src\VersionEx.h") | ForEach-Object { $_ -replace '\$ONIGMOVER\$', "$OnigmoVer" } | Set-Content "src\VersionEx.h"
(Get-Content "src\VersionEx.h") | ForEach-Object { $_ -replace '\$BETAVER\$', "$BetaVer" } | Set-Content "src\VersionEx.h"
(Get-Content "src\VersionEx.h") | ForEach-Object { $_ -replace '\$BETAVERA\$', "$BetaVerA" } | Set-Content "src\VersionEx.h"
Copy-Item -LiteralPath "Versions\Notepad3.exe.manifest.tpl" -Destination "res\Notepad3.exe.manifest.conf" -Force
(Get-Content "res\Notepad3.exe.manifest.conf") | ForEach-Object { $_ -replace '\$VERSION\$', $CompleteVer } | Set-Content "res\Notepad3.exe.manifest.conf"
if ($AppVeyorEnv) {

Binary file not shown.

BIN
res/AboutInfo.rtf Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 148 KiB

BIN
res/Notepad3_128.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
res/rizonesoft.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -31,6 +31,12 @@
#include <shlwapi.h>
#include <commdlg.h>
#include <string.h>
#pragma warning( push )
#pragma warning( disable : 4201) // union/struct w/o name
#include <richedit.h>
#pragma warning( pop )
#include "scintilla.h"
#include "notepad3.h"
#include "edit.h"
@ -60,7 +66,6 @@ extern int flagNoFileVariables;
extern int flagUseSystemMRU;
//=============================================================================
//
// MsgBox()
@ -205,105 +210,261 @@ BOOL GetDirectory(HWND hwndParent,int iTitle,LPWSTR pszFolder,LPCWSTR pszBase,BO
}
/*
//=============================================================================
//
// _LoadStringEx()
//
static DWORD _LoadStringEx(UINT nResId, LPCTSTR pszRsType, LPSTR strOut)
{
LPTSTR pszResId = MAKEINTRESOURCE(nResId);
if (g_hInstance == NULL)
return 0L;
HRSRC hRsrc = FindResource(g_hInstance, pszResId, pszRsType);
if (hRsrc == NULL) {
return 0L;
}
HGLOBAL hGlobal = LoadResource(g_hInstance, hRsrc);
if (hGlobal == NULL) {
return 0L;
}
const BYTE* pData = (const BYTE*)LockResource(hGlobal);
if (pData == NULL) {
FreeResource(hGlobal);
return 0L;
}
DWORD dwSize = SizeofResource(g_hInstance, hRsrc);
if (strOut) {
memcpy(strOut, (LPCSTR)pData, dwSize);
}
UnlockResource(hGlobal);
FreeResource(hGlobal);
return dwSize;
}
*/
//=============================================================================
//
// (EditStreamCallback)
// _LoadRtfCallback() RTF edit control StreamIn's callback function
//
static DWORD CALLBACK _LoadRtfCallback(
DWORD_PTR dwCookie, // (in) pointer to the string
LPBYTE pbBuff, // (in) pointer to the destination buffer
LONG cb, // (in) size in bytes of the destination buffer
LONG FAR* pcb // (out) number of bytes transfered
)
{
LPSTR* pstr = (LPSTR*)dwCookie;
LONG len = (LONG)strlen(*pstr);
if (len < cb)
{
*pcb = len;
memcpy(pbBuff, (LPCSTR)*pstr, *pcb);
*pstr += len;
//*pstr = '\0';
}
else
{
*pcb = cb;
memcpy(pbBuff, (LPCSTR)*pstr, *pcb);
*pstr += cb;
}
return 0;
}
// ----------------------------------------------------------------------------
static char* pAboutInfoResource = ABOUT_INFO_RTF;
static char* pAboutInfo;
//=============================================================================
//
// AboutDlgProc()
//
INT_PTR CALLBACK AboutDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
INT_PTR CALLBACK AboutDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
WCHAR wch[256] = { L'\0' };
static HFONT hFontTitle;
switch(umsg)
switch (umsg)
{
case WM_INITDIALOG:
case WM_INITDIALOG:
{
SetDlgItemText(hwnd, IDC_VERSION, VERSION_FILEVERSION_LONG);
SetDlgItemText(hwnd, IDC_SCI_VERSION, VERSION_SCIVERSION);
SetDlgItemText(hwnd, IDC_COPYRIGHT, VERSION_LEGALCOPYRIGHT);
SetDlgItemText(hwnd, IDC_AUTHORNAME, VERSION_AUTHORNAME);
SetDlgItemText(hwnd, IDC_COMPILER, VERSION_COMPILER);
if (hFontTitle)
DeleteObject(hFontTitle);
if (NULL == (hFontTitle = (HFONT)SendDlgItemMessage(hwnd, IDC_VERSION, WM_GETFONT, 0, 0)))
hFontTitle = GetStockObject(DEFAULT_GUI_FONT);
LOGFONT lf;
GetObject(hFontTitle, sizeof(LOGFONT), &lf);
lf.lfWeight = FW_BOLD;
lf.lfWidth = 8;
lf.lfHeight = 22;
// lf.lfQuality = ANTIALIASED_QUALITY;
hFontTitle = CreateFontIndirect(&lf);
SendDlgItemMessage(hwnd, IDC_VERSION, WM_SETFONT, (WPARAM)hFontTitle, TRUE);
if (GetDlgItem(hwnd, IDC_WEBPAGE) == NULL) {
SetDlgItemText(hwnd, IDC_WEBPAGE2, VERSION_WEBPAGEDISPLAY);
ShowWindow(GetDlgItem(hwnd, IDC_WEBPAGE2), SW_SHOWNORMAL);
}
else {
StringCchPrintf(wch, COUNTOF(wch), L"<A>%s</A>", VERSION_WEBPAGEDISPLAY);
SetDlgItemText(hwnd, IDC_WEBPAGE, wch);
}
// --- Rich Edit Control ---
//SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETBKGNDCOLOR, 0, (LPARAM)GetBackgroundColor(hwnd));
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETBKGNDCOLOR, 0, (LPARAM)GetSysColor(COLOR_3DFACE));
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SHOWSCROLLBAR, SB_VERT, (LPARAM)TRUE);
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SHOWSCROLLBAR, SB_HORZ, (LPARAM)FALSE);
DWORD styleFlags = SES_EXTENDBACKCOLOR; // | SES_HYPERLINKTOOLTIPS;
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETEDITSTYLE, (WPARAM)styleFlags, (LPARAM)styleFlags);
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_AUTOURLDETECT, (WPARAM)1, (LPARAM)0);
//CHARFORMAT2 cf2;
//ZeroMemory(&cf2, sizeof(CHARFORMAT2));
//cf2.dwMask = CFM_LINK | CFM_UNDERLINE | CFM_COLOR | CFM_LINKPROTECTED;
//cf2.dwEffects = CFE_LINK | CFE_UNDERLINE | CFE_LINKPROTECTED;
//cf2.crTextColor = RGB(255, 0, 0);
//cf2.bUnderlineType = CFU_UNDERLINENONE;
//SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETEDITSTYLEEX, 0, (LPARAM)SES_EX_HANDLEFRIENDLYURL);
//SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf2);
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETEVENTMASK, 0, (LPARAM)(ENM_LINK)); // link click
#if TRUE
EDITSTREAM editStreamIn = { (DWORD_PTR)&pAboutInfo, 0, _LoadRtfCallback };
pAboutInfo = pAboutInfoResource;
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_STREAMIN, SF_RTF, (LPARAM)&editStreamIn);
//DWORD dwSize = _LoadStringEx(IDR_ABOUTINFO_RTF, L"RTF", NULL);
//if (dwSize != 0) {
// char* pchBuffer = LocalAlloc(LPTR, dwSize + 1);
// pAboutInfo = pchBuffer;
// _LoadStringEx(IDR_ABOUTINFO_RTF, L"RTF", pAboutInfo);
// SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_STREAMIN, SF_RTF, (LPARAM)&editStreamIn);
// LocalFree(pchBuffer);
//}
//else {
// pAboutInfo = chErrMsg;
// SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_STREAMIN, SF_RTF, (LPARAM)&editStreamIn);
//}
#else
PARAFORMAT2 pf2;
ZeroMemory(&pf2, sizeof(PARAFORMAT2));
pf2.cbSize = (UINT)sizeof(PARAFORMAT2);
pf2.dwMask = (PFM_SPACEBEFORE | PFM_SPACEAFTER | PFM_LINESPACING);
pf2.dySpaceBefore = 48; // paragraph
pf2.dySpaceAfter = 48; // paragraph
pf2.dyLineSpacing = 24; // [twips]
pf2.bLineSpacingRule = 5; // 5: dyLineSpacing/20 is the spacing, in lines, from one line to the next.
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
SetDlgItemText(hwnd, IDC_RICHEDITABOUT, ABOUT_INFO_PLAIN);
#endif
CenterDlgInParent(hwnd);
}
return TRUE;
case WM_NOTIFY:
{
LPNMHDR pnmhdr = (LPNMHDR)lParam;
switch (pnmhdr->code)
{
case NM_CLICK:
case NM_RETURN:
{
WCHAR wch[256] = { L'\0' };
LOGFONT lf;
switch (pnmhdr->idFrom)
{
case IDC_WEBPAGE:
ShellExecute(hwnd, L"open", L"https://www.rizonesoft.com", NULL, NULL, SW_SHOWNORMAL);
break;
SetDlgItemText(hwnd,IDC_VERSION,VERSION_FILEVERSION_LONG);
SetDlgItemText(hwnd,IDC_SCI_VERSION,VERSION_SCIVERSION);
SetDlgItemText(hwnd,IDC_COPYRIGHT,VERSION_LEGALCOPYRIGHT);
SetDlgItemText(hwnd,IDC_AUTHORNAME,VERSION_AUTHORNAME);
SetDlgItemText(hwnd,IDC_COMPILER,VERSION_COMPILER);
if (hFontTitle)
DeleteObject(hFontTitle);
if (NULL == (hFontTitle = (HFONT)SendDlgItemMessage(hwnd,IDC_VERSION,WM_GETFONT,0,0)))
hFontTitle = GetStockObject(DEFAULT_GUI_FONT);
GetObject(hFontTitle,sizeof(LOGFONT),&lf);
lf.lfWeight = FW_BOLD;
lf.lfWidth = 8;
lf.lfHeight = 22;
// lf.lfQuality = ANTIALIASED_QUALITY;
hFontTitle = CreateFontIndirect(&lf);
SendDlgItemMessage(hwnd,IDC_VERSION,WM_SETFONT,(WPARAM)hFontTitle,TRUE);
if (GetDlgItem(hwnd,IDC_WEBPAGE) == NULL) {
SetDlgItemText(hwnd,IDC_WEBPAGE2,VERSION_WEBPAGEDISPLAY);
ShowWindow(GetDlgItem(hwnd,IDC_WEBPAGE2),SW_SHOWNORMAL);
}
else {
StringCchPrintf(wch,COUNTOF(wch),L"<A>%s</A>",VERSION_WEBPAGEDISPLAY);
SetDlgItemText(hwnd,IDC_WEBPAGE,wch);
}
if (GetDlgItem(hwnd, IDC_MODWEBPAGE) == NULL) {
SetDlgItemText(hwnd, IDC_MODWEBPAGE2, VERSION_MODPAGEDISPLAY);
ShowWindow(GetDlgItem(hwnd, IDC_MODWEBPAGE2), SW_SHOWNORMAL);
}
else {
StringCchPrintf(wch,COUNTOF(wch),L"<A>%s</A>", VERSION_MODPAGEDISPLAY);
SetDlgItemText(hwnd, IDC_MODWEBPAGE, wch);
}
if (GetDlgItem(hwnd, IDC_NOTE2WEBPAGE) == NULL) {
SetDlgItemText(hwnd, IDC_NOTE2WEBPAGE2, VERSION_WEBPAGE2DISPLAY);
ShowWindow(GetDlgItem(hwnd, IDC_NOTE2WEBPAGE2), SW_SHOWNORMAL);
}
else {
StringCchPrintf(wch,COUNTOF(wch),L"<A>%s</A>", VERSION_WEBPAGE2DISPLAY);
SetDlgItemText(hwnd, IDC_NOTE2WEBPAGE, wch);
}
CenterDlgInParent(hwnd);
}
return TRUE;
case WM_NOTIFY:
{
LPNMHDR pnmhdr = (LPNMHDR)lParam;
switch (pnmhdr->code) {
case NM_CLICK:
case NM_RETURN:
{
if (pnmhdr->idFrom == IDC_WEBPAGE) {
ShellExecute(hwnd,L"open",L"https://rizonesoft.com",NULL,NULL,SW_SHOWNORMAL);
}
else if (pnmhdr->idFrom == IDC_MODWEBPAGE) {
ShellExecute(hwnd,L"open",L"https://xhmikosr.github.io/notepad2-mod/",NULL,NULL,SW_SHOWNORMAL);
}
else if (pnmhdr->idFrom == IDC_NOTE2WEBPAGE) {
ShellExecute(hwnd,L"open",L"http://www.flos-freeware.ch",NULL,NULL,SW_SHOWNORMAL);
}
}
break;
default:
break;
}
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
case EN_LINK: // hyperlink from RichEdit Ctrl
{
case IDOK:
case IDCANCEL:
EndDialog(hwnd,IDOK);
break;
ENLINK* penLink = (ENLINK *)lParam;
if (penLink->msg == WM_LBUTTONDOWN)
{
WCHAR hLink[256];
TEXTRANGE txtRng;
txtRng.chrg = penLink->chrg;
txtRng.lpstrText = hLink;
SendDlgItemMessage(hwnd, IDC_RICHEDITABOUT, EM_GETTEXTRANGE, 0, (LPARAM)&txtRng);
ShellExecute(hwnd, L"open", hLink, NULL, NULL, SW_SHOWNORMAL);
}
}
return TRUE;
break;
}
}
break;
case WM_SETCURSOR:
{
if ((LOWORD(lParam) == HTCLIENT) &&
(GetDlgCtrlID((HWND)wParam) == IDC_RIZONEBMP))
{
SetCursor(LoadCursor(NULL, IDC_HAND));
SetWindowLongPtr(hwnd, DWLP_MSGRESULT, TRUE);
return TRUE;
}
}
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_RIZONEBMP:
ShellExecute(hwnd, L"open", L"https://www.rizonesoft.com", NULL, NULL, SW_SHOWNORMAL);
break;
case IDC_COPYVERSTRG:
{
WCHAR wchVerInfo[1024] = { L'\0' };
StringCchCopy(wchVerInfo, COUNTOF(wchVerInfo), VERSION_FILEVERSION_LONG);
StringCchCat(wchVerInfo, COUNTOF(wchVerInfo), L"\n" VERSION_SCIVERSION);
StringCchCat(wchVerInfo, COUNTOF(wchVerInfo), L"\n" VERSION_COMPILER);
SetClipboardTextW(g_hwndMain, wchVerInfo);
}
break;
case IDOK:
case IDCANCEL:
EndDialog(hwnd, IDOK);
break;
}
return TRUE;
}
return FALSE;
}
@ -2601,6 +2762,4 @@ INT_PTR InfoBox(int iType,LPCWSTR lpstrSetting,int uidMessage,...)
}
// End of Dialogs.c

View File

@ -647,7 +647,7 @@ BOOL EditSetClipboardText(HWND hwnd, const char* pszText)
return TRUE;
}
WCHAR* pszTextW = L"";
WCHAR* pszTextW = NULL;
UINT uCodePage = Encoding_SciGetCodePage(hwnd);
int cchTextW = MultiByteToWideChar(uCodePage, 0, pszText, -1, NULL, 0) + 1;
if (cchTextW > 1) {
@ -655,21 +655,12 @@ BOOL EditSetClipboardText(HWND hwnd, const char* pszText)
MultiByteToWideChar(uCodePage, 0, pszText, -1, pszTextW, cchTextW);
}
if (!OpenClipboard(GetParent(hwnd))) {
if (pszTextW) {
SetClipboardTextW(GetParent(hwnd), pszTextW);
LocalFree(pszTextW);
return FALSE;
return TRUE;
}
HANDLE hNew = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(WCHAR) * cchTextW);
WCHAR* pszNew = GlobalLock(hNew);
StringCchCopy(pszNew, cchTextW, pszTextW);
GlobalUnlock(hNew);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT, hNew);
CloseClipboard();
return TRUE;
return FALSE;
}
@ -867,11 +858,6 @@ BOOL EditPasteClipboard(HWND hwnd, BOOL bSwapClipBoard)
//
BOOL EditCopyAppend(HWND hwnd, BOOL bAppend)
{
if (!IsClipboardFormatAvailable(CF_UNICODETEXT)) {
SciCall_Copy();
return TRUE;
}
int iCurPos = SciCall_GetCurrentPos();
int iAnchorPos = SciCall_GetAnchor();
@ -892,7 +878,7 @@ BOOL EditCopyAppend(HWND hwnd, BOOL bAppend)
pszText = LocalAlloc(LPTR,cchText + 1);
SciCall_GetTextFromBegin((DocPos)LocalSize(pszText), pszText);
}
WCHAR* pszTextW = L"";
WCHAR* pszTextW = NULL;
UINT uCodePage = Encoding_SciGetCodePage(hwnd);
int cchTextW = MultiByteToWideChar(uCodePage,0,pszText,-1,NULL,0);
if (cchTextW > 0) {
@ -904,6 +890,14 @@ BOOL EditCopyAppend(HWND hwnd, BOOL bAppend)
if (pszText)
LocalFree(pszText);
if (!bAppend) {
BOOL res = (BOOL)SetClipboardTextW(GetParent(hwnd), pszTextW);
LocalFree(pszTextW);
return res;
}
// --- Append to Clipboard ---
if (!OpenClipboard(GetParent(hwnd))) {
LocalFree(pszTextW);
return FALSE;
@ -912,29 +906,29 @@ BOOL EditCopyAppend(HWND hwnd, BOOL bAppend)
HANDLE hOld = GetClipboardData(CF_UNICODETEXT);
WCHAR* pszOld = GlobalLock(hOld);
int sizeNew = bAppend ? (lstrlen(pszOld) + lstrlen(pszTextW) + 1) : (lstrlen(pszTextW) + 1);
const WCHAR *pszSep = L"\r\n\r\n";
sizeNew += bAppend ? (int)lstrlen(pszSep) : 0;
int sizeNew = lstrlen(pszOld) + lstrlen(pszTextW) + 1;
HANDLE hNew = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,sizeof(WCHAR) * sizeNew);
WCHAR* pszNew = GlobalLock(hNew);
const WCHAR *pszSep = L"\r\n";
sizeNew += (int)lstrlen(pszSep);
// Copy Clip
WCHAR* pszNewTextW = LocalAlloc(LPTR, sizeof(WCHAR) * sizeNew);
if (bAppend) {
StringCchCopy(pszNew, sizeNew, pszOld);
StringCchCat(pszNew, sizeNew, pszSep);
StringCchCat(pszNew, sizeNew, pszTextW);
}
else {
StringCchCopy(pszNew, sizeNew, pszTextW);
}
GlobalUnlock(hNew);
GlobalUnlock(hOld);
if (pszOld)
StringCchCopy(pszNewTextW, sizeNew, pszOld);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT,hNew);
GlobalUnlock(hOld);
CloseClipboard();
return TRUE;
// Add New
StringCchCat(pszNewTextW, sizeNew, pszSep);
StringCchCat(pszNewTextW, sizeNew, pszTextW);
BOOL res = (BOOL)SetClipboardTextW(GetParent(hwnd), pszNewTextW);
LocalFree(pszNewTextW);
return res;
}

View File

@ -78,6 +78,30 @@ WCHAR* _StrCutIW(WCHAR* s,const WCHAR* pattern)
}
//=============================================================================
//
// SetClipboardWchTextW()
//
bool SetClipboardTextW(HWND hwnd, LPCWSTR pszTextW)
{
if (!OpenClipboard(hwnd)) {
return false;
}
int cchTextW = lstrlen(pszTextW) + 1;
HANDLE hData = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(WCHAR) * cchTextW);
WCHAR* pszNew = GlobalLock(hData);
StringCchCopy(pszNew, cchTextW, pszTextW);
GlobalUnlock(hData);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT, hData);
CloseClipboard();
return true;
}
//=============================================================================
//
// Manipulation of (cached) ini file sections
@ -189,16 +213,18 @@ BOOL IniSectionSetString(LPWSTR lpCachedIniSection,LPCWSTR lpName,LPCWSTR lpStri
// PrivateIsAppThemed()
//
extern HMODULE hModUxTheme;
BOOL PrivateIsAppThemed()
{
FARPROC pfnIsAppThemed;
BOOL bIsAppThemed = FALSE;
BOOL bIsAppThemed = IsWin8() ? TRUE : FALSE;
if (hModUxTheme) {
pfnIsAppThemed = GetProcAddress(hModUxTheme,"IsAppThemed");
if (hModUxTheme && !bIsAppThemed)
{
FARPROC pfnIsAppThemed = GetProcAddress(hModUxTheme,"IsAppThemed");
if (pfnIsAppThemed)
if (pfnIsAppThemed) {
bIsAppThemed = (BOOL)pfnIsAppThemed();
}
}
return bIsAppThemed;
}
@ -941,6 +967,16 @@ BOOL StatusSetTextID(HWND hwnd,UINT nPart,UINT uID)
}
//=============================================================================
//
// StatusCalcPaneWidth()
//
COLORREF GetBackgroundColor(HWND hwnd)
{
return GetBkColor(GetDC(hwnd));
}
//=============================================================================
//
// StatusCalcPaneWidth()

View File

@ -108,6 +108,8 @@ __inline BOOL IniSectionSetBool(LPWSTR lpCachedIniSection, LPCWSTR lpName, BOOL
#define IsWinServer() IsWindowsServer() // Indicates if the current OS is a Windows Server release.
// Applications that need to distinguish between server and client versions of Windows should call this function.
bool SetClipboardTextW(HWND, LPCWSTR);
BOOL PrivateIsAppThemed();
HRESULT PrivateSetCurrentProcessExplicitAppUserModelID(PCWSTR);
BOOL IsElevated();
@ -143,6 +145,7 @@ void DeleteBitmapButton(HWND,int);
#define StatusSetSimple(hwnd,b) SendMessage(hwnd,SB_SIMPLE,(WPARAM)b,0)
BOOL StatusSetText(HWND,UINT,LPCWSTR);
BOOL StatusSetTextID(HWND,UINT,UINT);
COLORREF GetBackgroundColor(HWND);
int StatusCalcPaneWidth(HWND,LPCWSTR);
int Toolbar_GetButtons(HWND,int,LPWSTR,int);

View File

@ -280,6 +280,7 @@ WIN32_FIND_DATA fdCurFile;
UINT msgTaskbarCreated = 0;
HMODULE hModUxTheme = NULL;
HMODULE hRichEdit = NULL;
EDITFINDREPLACE g_efrData = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL };
UINT cpLastFind = 0;
@ -509,7 +510,11 @@ int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpCmdLine,int n
msgTaskbarCreated = RegisterWindowMessage(L"TaskbarCreated");
hModUxTheme = LoadLibrary(L"uxtheme.dll");
if (!IsWin8()) {
hModUxTheme = LoadLibrary(L"uxtheme.dll");
}
hRichEdit = LoadLibrary(L"RICHED20.DLL"); // Use "RichEdit20W" for control in .rc
//hRichEdit = LoadLibrary(L"MSFTEDIT.DLL"); // Use "RichEdit50W" for control in .rc
Scintilla_RegisterClasses(hInstance);
@ -1367,7 +1372,7 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance)
if (hbmp)
bExternalBitmap = TRUE;
else {
LPWSTR toolBarIntRes = (iHighDpiToolBar > 0) ? MAKEINTRESOURCE(IDR_MAINWND2) : MAKEINTRESOURCE(IDR_MAINWND);
LPWSTR toolBarIntRes = (iHighDpiToolBar > 0) ? MAKEINTRESOURCE(IDR_MAINWNDTB2) : MAKEINTRESOURCE(IDR_MAINWNDTB);
hbmp = LoadImage(hInstance, toolBarIntRes, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
hbmpCopy = CopyImage(hbmp, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
}
@ -4349,13 +4354,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
break;
case IDM_HELP_ONLINEDOCUMENTATION:
ShellExecute(0, 0, ONLINE_HELP_WEBSITE, 0, 0, SW_SHOW);
break;
case IDM_HELP_ONLINEDOCUMENTATION:
ShellExecute(0, 0, ONLINE_HELP_WEBSITE, 0, 0, SW_SHOW);
break;
case IDM_HELP_ABOUT:
ThemedDialogBox(g_hInstance,MAKEINTRESOURCE(IDD_ABOUT),
hwnd,AboutDlgProc);
case IDM_HELP_ABOUT:
ThemedDialogBox(g_hInstance, MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
break;
case IDM_SETPASS:
@ -4886,19 +4890,8 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
GetString(IDS_UNTITLED,tchUntitled,COUNTOF(tchUntitled));
pszCopy = tchUntitled;
}
if (OpenClipboard(hwnd)) {
HANDLE hData;
WCHAR *pData;
EmptyClipboard();
int len = lstrlen(pszCopy);
hData = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,sizeof(WCHAR) * (len+1));
pData = GlobalLock(hData);
StringCchCopyN(pData,(len+1),pszCopy,len);
GlobalUnlock(hData);
SetClipboardData(CF_UNICODETEXT,hData);
CloseClipboard();
}
SetClipboardTextW(hwnd, pszCopy);
UpdateToolbar();
}
break;
@ -4906,22 +4899,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
case CMD_COPYWINPOS: {
WCHAR wszWinPos[MIDSZ_BUFFER];
WININFO wi = GetMyWindowPlacement(g_hwndMain,NULL);
StringCchPrintf(wszWinPos,COUNTOF(wszWinPos),L"/pos %i,%i,%i,%i,%i",wi.x,wi.y,wi.cx,wi.cy,wi.max);
if (OpenClipboard(hwnd)) {
HANDLE hData;
WCHAR *pData;
EmptyClipboard();
int len = StringCchLenW(wszWinPos,COUNTOF(wszWinPos));
hData = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,sizeof(WCHAR) * (len+1));
pData = GlobalLock(hData);
StringCchCopyN(pData,(len+1),wszWinPos,len);
GlobalUnlock(hData);
SetClipboardData(CF_UNICODETEXT,hData);
CloseClipboard();
}
SetClipboardTextW(hwnd, wszWinPos);
UpdateToolbar();
}
break;
@ -8474,8 +8454,7 @@ void ShowNotifyIcon(HWND hwnd,BOOL bAdd)
NOTIFYICONDATA nid;
if (!hIcon)
hIcon = LoadImage(g_hInstance,MAKEINTRESOURCE(IDR_MAINWND),
IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
hIcon = LoadImage(g_hInstance,MAKEINTRESOURCE(IDR_MAINWND),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
ZeroMemory(&nid,sizeof(NOTIFYICONDATA));
nid.cbSize = sizeof(NOTIFYICONDATA);

View File

@ -25,9 +25,11 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_RUN ICON "..\\res\\Run.ico"
IDR_MAINWND ICON "..\\res\\Notepad3.ico"
IDI_RUN ICON "..\\res\\Run.ico"
IDR_MAINWND128 ICON "..\\res\\Notepad3_128.ico"
IDI_STYLES ICON "..\\res\\Styles.ico"
@ -37,7 +39,7 @@ IDI_STYLES ICON "..\\res\\Styles.ico"
// Bitmap
//
IDR_MAINWND BITMAP "..\\res\\Toolbar.bmp"
IDR_MAINWNDTB BITMAP "..\\res\\Toolbar.bmp"
IDB_OPEN BITMAP "..\\res\\Open.bmp"
@ -49,7 +51,9 @@ IDB_PICK BITMAP "..\\res\\Pick.bmp"
IDB_ENCODING BITMAP "..\\res\\Encoding.bmp"
IDR_MAINWND2 BITMAP "..\\res\\Toolbar2.bmp"
IDR_MAINWNDTB2 BITMAP "..\\res\\Toolbar2.bmp"
IDR_RIZBITMAP BITMAP "..\\res\\rizonesoft.bmp"
/////////////////////////////////////////////////////////////////////////////
@ -179,8 +183,8 @@ BEGIN
MENUITEM "&Fuse Lines\tCtrl+Alt+J", IDM_EDIT_JOINLN_NOSP
MENUITEM "&Preserve Paragraphs\tCtrl+Shift+J", IDM_EDIT_JOINLINES_PARA
MENUITEM SEPARATOR
MENUITEM "Merge &Blank Lines\tAlt+Y", IDM_EDIT_MERGEBLANKLINES
MENUITEM "&Remove Blank Lines\tAlt+R", IDM_EDIT_REMOVEBLANKLINES
MENUITEM "Merge &Blank Lines\tAlt+Y", IDM_EDIT_MERGEBLANKLINES
MENUITEM "&Remove Blank Lines\tAlt+R", IDM_EDIT_REMOVEBLANKLINES
END
POPUP "&Block"
BEGIN
@ -634,27 +638,22 @@ END
// Dialog
//
IDD_ABOUT DIALOGEX 0, 0, 255, 227
IDD_ABOUT DIALOGEX 0, 0, 400, 275
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_NOFAILCREATE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About Notepad3"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,195,204,50,14
ICON IDR_MAINWND,IDC_STATIC,7,7,21,20
LTEXT "",IDC_VERSION,45,10,200,17
LTEXT "Scintilla Library Version:",IDC_SCI_VERSION,45,24,200,8
LTEXT "Compiled with:",IDC_COMPILER2,45,35,200,8
LTEXT "",IDC_COMPILER,96,35,200,8
LTEXT "",IDC_COPYRIGHT,45,55,200,8
LTEXT "",IDC_WEBPAGE2,45,64,200,8,NOT WS_VISIBLE | WS_DISABLED
CONTROL "",IDC_WEBPAGE,"SysLink",WS_TABSTOP,45,64,200,10
LTEXT "XhmikosR ( Notepad2-mod )",IDC_STATIC,45,85,200,8
LTEXT "",IDC_MODWEBPAGE2,45,94,200,8,NOT WS_VISIBLE | WS_DISABLED
CONTROL "",IDC_MODWEBPAGE,"SysLink",WS_TABSTOP,45,94,200,10
LTEXT "Florian Balmer et al. ( Notepad2 )",IDC_STATIC,45,110,200,8
LTEXT "",IDC_NOTE2WEBPAGE2,45,119,200,8,NOT WS_VISIBLE | WS_DISABLED
CONTROL "",IDC_NOTE2WEBPAGE,"SysLink",WS_TABSTOP,45,119,200,10
LTEXT "Contributors: Derick Payne (Rizonesoft), Flo Balmer (Notepad2), N.Hodgson (Scintilla), XhmikosR (Notepad2-mod), Kai Liu, RL Vision, A.Lekov, B.Barbieri, M.Ellis (MinimizeToTray), D.Dyer (crypt), T.D.Hanson (uthash), RaiKoHoff",IDC_STATIC,45,150,200,44
DEFPUSHBUTTON "OK",IDOK,330,256,50,14
ICON IDR_MAINWND128,IDC_STATIC,4,5,20,20,SS_REALSIZEIMAGE,WS_EX_TRANSPARENT
LTEXT "IDC_VERSION",IDC_VERSION,80,7,288,15
LTEXT "Scintilla Library Version:",IDC_SCI_VERSION,80,24,280,8
LTEXT "Build with:",IDC_COMPILER,80,35,210,8
LTEXT "IDC_COPYRIGHT",IDC_COPYRIGHT,80,55,180,8
LTEXT "",IDC_WEBPAGE2,190,55,100,8,NOT WS_VISIBLE | WS_DISABLED
CONTROL "",IDC_WEBPAGE,"SysLink",WS_TABSTOP,190,55,100,10
CONTROL IDR_RIZBITMAP,IDC_RIZONEBMP,"Static",SS_BITMAP | SS_NOTIFY | SS_REALSIZEIMAGE,305,7,130,20,WS_EX_TRANSPARENT
PUSHBUTTON "Copy Version Text",IDC_COPYVERSTRG,304,35,76,14,BS_FLAT
CONTROL "",IDC_RICHEDITABOUT,"RichEdit20W",WS_VSCROLL | WS_HSCROLL | WS_TABSTOP | 0x29c4,20,80,360,170
END
IDD_FIND DIALOGEX 0, 0, 273, 129
@ -669,7 +668,7 @@ BEGIN
CONTROL "Match &beginning of word only",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,61,110,10
CONTROL "&Transform backslashes",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,73,85,10
CONTROL "Regular &expression search",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,96,10
CONTROL "Dot matches &all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,65,10
CONTROL "Dot &matches all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,65,10
CONTROL "&Don't wrap around",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,37,75,10
CONTROL "C&lose after find",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,49,65,10
CONTROL "Mark &Occurrences",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,61,73,10
@ -699,7 +698,7 @@ BEGIN
CONTROL "Match &beginning of word only",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,90,110,10
CONTROL "&Transform backslashes",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,102,89,10
CONTROL "Regular &expression search",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,114,97,10
CONTROL "Dot matches &all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,125,65,10
CONTROL "Dot &matches all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,125,65,10
CONTROL "&Don't wrap around",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,66,75,10
CONTROL "C&lose after replace",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,78,77,10
CONTROL "Mark &Occurrences",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,90,73,10
@ -1167,11 +1166,11 @@ GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUT, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 245
VERTGUIDE, 45
LEFTMARGIN, 4
VERTGUIDE, 19
VERTGUIDE, 340
TOPMARGIN, 7
BOTTOMMARGIN, 218
BOTTOMMARGIN, 270
END
IDD_FIND, DIALOG

View File

@ -110,6 +110,7 @@
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<FloatingPointModel>Fast</FloatingPointModel>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>msimg32.lib;comctl32.lib;imm32.lib;shlwapi.lib;scintilla.lib;%(AdditionalDependencies)</AdditionalDependencies>
@ -163,6 +164,7 @@
<StringPooling>true</StringPooling>
<FloatingPointModel>Fast</FloatingPointModel>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>msimg32.lib;comctl32.lib;imm32.lib;shlwapi.lib;scintilla.lib;%(AdditionalDependencies)</AdditionalDependencies>
@ -215,6 +217,7 @@
<LanguageStandard>stdcpp17</LanguageStandard>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<StringPooling>true</StringPooling>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>msimg32.lib;comctl32.lib;imm32.lib;shlwapi.lib;scintilla.lib;%(AdditionalDependencies)</AdditionalDependencies>
@ -269,6 +272,7 @@
<LanguageStandard>stdcpp17</LanguageStandard>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<StringPooling>true</StringPooling>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>msimg32.lib;comctl32.lib;imm32.lib;shlwapi.lib;scintilla.lib;%(AdditionalDependencies)</AdditionalDependencies>
@ -369,6 +373,8 @@
</ItemGroup>
<ItemGroup>
<Image Include="..\res\Notepad3.ico" />
<Image Include="..\res\Notepad3_128.ico" />
<Image Include="..\res\rizonesoft.bmp" />
<Image Include="..\res\Toolbar2.bmp" />
</ItemGroup>
<ItemGroup>

View File

@ -150,6 +150,12 @@
<Image Include="..\res\Toolbar2.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\res\Notepad3_128.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\res\rizonesoft.bmp">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Notepad3.rc">

View File

@ -37,15 +37,15 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", MY_APPNAME
VALUE "FileDescription", MY_APPNAME
VALUE "InternalName", MY_APPNAME
VALUE "ProductName", MY_APPNAME
VALUE "Comments", APPNAMEA
VALUE "FileDescription", APPNAMEA
VALUE "InternalName", APPNAMEA
VALUE "ProductName", APPNAMEA
VALUE "CompanyName", VERSION_COMPANYNAME
VALUE "FileVersion", VERSION_FILEVERSION
VALUE "ProductVersion", VERSION_FILEVERSION
VALUE "LegalCopyright", VERSION_LEGALCOPYRIGHT
VALUE "OriginalFilename", "Notepad3.exe"
VALUE "OriginalFilename", APPNAMEA ".exe"
END
END
BLOCK "VarFileInfo"

Binary file not shown.

View File

@ -5,7 +5,9 @@
// //////////////////////////////////////////////////////////
#define VERSION_MAJOR 3
#define VERSION_MINOR 18
#define VERSION_REV 222
#define VERSION_BUILD 905
#define VERSION_REV 227
#define VERSION_BUILD 911
#define SCINTILLA_VER 403
#define ONIGMO_REGEX_VER 6.1.3
#define VERSION_BETA L" beta "
#define VERSIONA_BETA " beta "

View File

@ -88,7 +88,6 @@
#define IDD_ADDTOFAV 182
#define IDC_FINDCLOSE 183
#define IDC_EMAIL3 184
#define IDC_VERSION2 185
#define IDD_FILEMRU 186
#define IDC_FINDPREV 187
#define IDD_CHANGENOTIFY 188
@ -130,7 +129,7 @@
#define IDC_WILDCARDHELP 225
#define IDC_WILDCARDSEARCH 226
#define IDC_SCI_VERSION 227
#define IDR_MAINWND2 228
#define IDR_MAINWNDTB 228
#define IDC_REMOVE 229
#define IDC_SWAPSTRG 230
#define IDC_CHECK_OCC 231
@ -147,7 +146,6 @@
#define IDACC_SELTOPREV 311
#define IDC_NFOASOEM 400
#define IDC_COMPILER 401
#define IDC_COMPILER2 402
#define IDD_READPW 501
#define IDC_CHECK1 502
#define IDC_EDIT1 503
@ -163,6 +161,12 @@
#define IDM_HELP_UPDATEINSTALLER 513
#define IDM_HELP_UPDATEWEBSITE 514
#define IDS_FR_STATUS_TEXT 515
#define IDR_MAINWNDTB2 550
#define IDR_MAINWND128 551
#define IDC_RICHEDITABOUT 552
#define IDC_COPYVERSTRG 553
#define IDR_RIZBITMAP 554
#define IDC_RIZONEBMP 555
#define IDS_APPTITLE 10000
#define IDS_APPTITLE_ELEVATED 10001
#define IDS_APPTITLE_PASTEBOARD 10002