3909cc103a
[Git2Git] Merged PR 5760120: Add propsheet chooser to Windows Now the inbox console propsheet can choose which terminal is default Related work items: MSFT-32007202 #492 Retrieved from https://microsoft.visualstudio.com os.2020 OS official/rs_wdx_dxp_windev d80f506858bd990c267de6cefae7ff55707b3a57
231 lines
5.4 KiB
C
231 lines
5.4 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation.
|
|
Licensed under the MIT license.
|
|
|
|
Module Name:
|
|
|
|
console.h
|
|
|
|
Abstract:
|
|
|
|
This module contains the definitions for the console applet
|
|
|
|
Author:
|
|
|
|
Jerry Shea (jerrysh) Feb-3-1992
|
|
|
|
Revision History:
|
|
Mike Griese, migrie, Oct 2016:
|
|
Moved to cpp and the OpenConsole project
|
|
|
|
--*/
|
|
#pragma once
|
|
|
|
#include "font.h"
|
|
#include "OptionsPage.h"
|
|
#include "LayoutPage.h"
|
|
#include "ColorsPage.h"
|
|
#include "TerminalPropsheetPage.h"
|
|
#include "ColorControl.h"
|
|
|
|
//
|
|
// Icon ID.
|
|
//
|
|
|
|
#define IDI_CONSOLE 1
|
|
|
|
//
|
|
// String table constants
|
|
//
|
|
|
|
// clang-format off
|
|
#define IDS_NAME 1
|
|
#define IDS_INFO 2
|
|
#define IDS_TITLE 3
|
|
#define IDS_RASTERFONT 4
|
|
#define IDS_FONTSIZE 5
|
|
#define IDS_SELECTEDFONT 6
|
|
#define IDS_SAVE 7
|
|
#define IDS_LINKERRCAP 8
|
|
#define IDS_LINKERROR 9
|
|
#define IDS_FONTSTRING 10
|
|
#define IDS_TOOLTIP_LINE_SELECTION 11
|
|
#define IDS_TOOLTIP_FILTER_ON_PASTE 12
|
|
#define IDS_TOOLTIP_LINE_WRAP 13
|
|
#define IDS_TOOLTIP_CTRL_KEYS 14
|
|
#define IDS_TOOLTIP_EDIT_KEYS 15
|
|
// unused 16
|
|
#define IDS_TOOLTIP_OPACITY 17
|
|
#define IDS_TOOLTIP_INTERCEPT_COPY_PASTE 18
|
|
#define IDS_TERMINAL_DEF_INBOX 19
|
|
// clang-format on
|
|
|
|
void MakeAltRasterFont(
|
|
__in UINT CodePage,
|
|
__out COORD* AltFontSize,
|
|
__out BYTE* AltFontFamily,
|
|
__out ULONG* AltFontIndex,
|
|
__out_ecount(LF_FACESIZE) LPTSTR AltFaceName);
|
|
|
|
[[nodiscard]] NTSTATUS InitializeDbcsMisc(VOID);
|
|
|
|
BYTE CodePageToCharSet(
|
|
UINT CodePage);
|
|
|
|
BOOL ShouldAllowAllMonoTTFonts();
|
|
|
|
LPTTFONTLIST
|
|
SearchTTFont(
|
|
__in_opt LPCTSTR ptszFace,
|
|
BOOL fCodePage,
|
|
UINT CodePage);
|
|
|
|
BOOL IsAvailableTTFont(
|
|
LPCTSTR ptszFace);
|
|
|
|
BOOL IsAvailableTTFontCP(
|
|
LPCTSTR ptszFace,
|
|
UINT CodePage);
|
|
|
|
BOOL IsDisableBoldTTFont(
|
|
LPCTSTR ptszFace);
|
|
|
|
LPTSTR
|
|
GetAltFaceName(
|
|
LPCTSTR ptszFace);
|
|
|
|
[[nodiscard]] NTSTATUS DestroyDbcsMisc(VOID);
|
|
|
|
int LanguageListCreate(
|
|
HWND hDlg,
|
|
UINT CodePage);
|
|
|
|
int LanguageDisplay(
|
|
HWND hDlg,
|
|
UINT CodePage);
|
|
|
|
//
|
|
// Function prototypes
|
|
//
|
|
|
|
INT_PTR ConsolePropertySheet(
|
|
__in HWND hWnd,
|
|
__in PCONSOLE_STATE_INFO pStateInfo);
|
|
|
|
VOID RegisterClasses(
|
|
HINSTANCE hModule);
|
|
|
|
VOID UnregisterClasses(
|
|
HINSTANCE hModule);
|
|
|
|
INT_PTR APIENTRY FontDlgProc(
|
|
HWND hDlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
VOID InitRegistryValues(
|
|
__out PCONSOLE_STATE_INFO pStateInfo);
|
|
|
|
DWORD GetRegistryValues(
|
|
__out_opt PCONSOLE_STATE_INFO StateInfo);
|
|
|
|
VOID SetGlobalRegistryValues();
|
|
|
|
VOID SetRegistryValues(
|
|
PCONSOLE_STATE_INFO StateInfo,
|
|
DWORD dwPage);
|
|
|
|
[[nodiscard]] LRESULT CALLBACK FontPreviewWndProc(
|
|
HWND hWnd,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
[[nodiscard]] LRESULT CALLBACK PreviewWndProc(
|
|
HWND hWnd,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
VOID EndDlgPage(
|
|
const HWND hDlg,
|
|
const BOOL fSaveNow);
|
|
|
|
BOOL UpdateStateInfo(
|
|
HWND hDlg,
|
|
UINT Item,
|
|
int Value);
|
|
|
|
BOOL InitializeConsoleState();
|
|
void UninitializeConsoleState();
|
|
void UpdateApplyButton(const HWND hDlg);
|
|
[[nodiscard]] HRESULT FindFontAndUpdateState();
|
|
|
|
BOOL PopulatePropSheetPageArray(_Out_writes_(cPsps) PROPSHEETPAGE* pPsp, const size_t cPsps, const BOOL fRegisterCallbacks);
|
|
|
|
void CreateAndAssociateToolTipToControl(const UINT dlgItem, const HWND hDlg, const UINT idsToolTip);
|
|
|
|
BOOL CheckNum(HWND hDlg, UINT Item);
|
|
void UpdateItem(HWND hDlg, UINT item, UINT nNum);
|
|
void Undo(HWND hControlWindow);
|
|
|
|
//
|
|
// Macros
|
|
//
|
|
#define AttrToRGB(Attr) (gpStateInfo->ColorTable[(Attr)&0x0F])
|
|
#define ScreenTextColor(pStateInfo) \
|
|
(AttrToRGB(LOBYTE(pStateInfo->ScreenAttributes) & 0x0F))
|
|
#define ScreenBkColor(pStateInfo) \
|
|
(AttrToRGB(LOBYTE(pStateInfo->ScreenAttributes >> 4)))
|
|
#define PopupTextColor(pStateInfo) \
|
|
(AttrToRGB(LOBYTE(pStateInfo->PopupAttributes) & 0x0F))
|
|
#define PopupBkColor(pStateInfo) \
|
|
(AttrToRGB(LOBYTE(pStateInfo->PopupAttributes >> 4)))
|
|
|
|
// clang-format off
|
|
#if DBG
|
|
#define _DBGFONTS 0x00000001
|
|
#define _DBGFONTS2 0x00000002
|
|
#define _DBGCHARS 0x00000004
|
|
#define _DBGOUTPUT 0x00000008
|
|
#define _DBGALL 0xFFFFFFFF
|
|
extern ULONG gDebugFlag;
|
|
|
|
#define DBGFONTS(_params_)
|
|
#define DBGFONTS2(_params_)
|
|
#define DBGCHARS(_params_)
|
|
#define DBGOUTPUT(_params_)
|
|
#else
|
|
#define DBGFONTS(_params_)
|
|
#define DBGFONTS2(_params_)
|
|
#define DBGCHARS(_params_)
|
|
#define DBGOUTPUT(_params_)
|
|
#endif
|
|
// clang-format on
|
|
|
|
// Macro definitions that handle codepages
|
|
//
|
|
#define CP_US (UINT)437
|
|
#define CP_JPN (UINT)932
|
|
#define CP_WANSUNG (UINT)949
|
|
#define CP_TC (UINT)950
|
|
#define CP_SC (UINT)936
|
|
|
|
#define IsBilingualCP(cp) ((cp) == CP_JPN || (cp) == CP_WANSUNG)
|
|
#define IsEastAsianCP(cp) ((cp) == CP_JPN || (cp) == CP_WANSUNG || (cp) == CP_TC || (cp) == CP_SC)
|
|
|
|
const unsigned int TRANSPARENCY_RANGE_MIN = 0x4D;
|
|
|
|
const unsigned int OPTIONS_PAGE_INDEX = 0;
|
|
const unsigned int FONT_PAGE_INDEX = 1;
|
|
const unsigned int LAYOUT_PAGE_INDEX = 2;
|
|
const unsigned int COLORS_PAGE_INDEX = 3;
|
|
const unsigned int TERMINAL_PAGE_INDEX = 4;
|
|
// number of property sheet pages
|
|
static const int V1_NUMBER_OF_PAGES = 4;
|
|
static const int NUMBER_OF_PAGES = 5;
|
|
|
|
BOOL GetConsoleBoolValue(__in PCWSTR pszValueName, __in BOOL fDefault);
|