📄 profile.cpp
字号:
#include "precomp.hxx"
#include "local.h"
#include "profile.h"
static void AdjustMargin(RECT *rcMargin)
{
if (rcMargin->top + rcMargin->bottom >= A6PAPER_HEIGHT)
{
// should be corrupted, set to default
rcMargin->top = MIN_MARGIN_TOP;
rcMargin->bottom = MIN_MARGIN_BOTTOM;
}
if (rcMargin->left + rcMargin->right >= A6PAPER_WIDTH)
{
// should be corrupted, set to default
rcMargin->left = MIN_MARGIN_LEFT;
rcMargin->right = MIN_MARGIN_RIGHT;
}
if (rcMargin->top < MIN_MARGIN_TOP)
rcMargin->top = MIN_MARGIN_TOP;
if (rcMargin->bottom < MIN_MARGIN_BOTTOM)
rcMargin->bottom = MIN_MARGIN_BOTTOM;
if (rcMargin->left < MIN_MARGIN_LEFT)
rcMargin->left = MIN_MARGIN_LEFT;
if (rcMargin->right < MIN_MARGIN_RIGHT)
rcMargin->right = MIN_MARGIN_RIGHT;
}
void LoadProfileSettings(LPA6PRINTDLG lpParam)
{
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, STR_KEY_SETTINGS, 0, 0, &hKey) == ERROR_SUCCESS)
{
DWORD dwType, dwData;
DWORD cbData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Port"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nPort = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Paper"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nPaper = dwData;
switch (lpParam->nPaper)
{
case 0: // A6 Sheet Paper
lpParam->nWidth = A6PAPER_WIDTH;
lpParam->nHeight = A6PAPER_HEIGHT;
break;
case 1: // A6 Roll Paper
lpParam->nWidth = A6PAPER_WIDTH;
lpParam->nHeight = A6PAPER_HEIGHT*2;
break;
case 2: // Customize size
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Paper Width"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nWidth = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Paper Height"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nHeight = dwData;
break;
}
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Orientation"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->bLandscape = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("HalfTone"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nDither = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("FormFeed"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nForm = dwData;
if (lpParam->nForm == 0)
lpParam->nScroll = DEFAULT_SCROLL;
else
{
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("FormFeed Length"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->nScroll = dwData;
}
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Margin Top"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->rcMargin.top = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Margin Bottom"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->rcMargin.bottom = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Margin Left"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->rcMargin.left = dwData;
dwType = REG_DWORD; cbData = sizeof(DWORD);
if (RegQueryValueEx(hKey, TEXT("Margin Right"), NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS)
lpParam->rcMargin.right = dwData;
AdjustMargin(&lpParam->rcMargin);
RegCloseKey(hKey);
}
}
void SaveProfileSettings(LPA6PRINTDLG lpParam)
{
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, STR_KEY_SETTINGS, 0, 0, &hKey) == ERROR_SUCCESS)
{
DWORD dwType, dwData;
DWORD cbData;
AdjustMargin(&lpParam->rcMargin);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nPort;
RegSetValueEx(hKey, TEXT("Port"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nPaper;
RegSetValueEx(hKey, TEXT("Paper"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nWidth;
RegSetValueEx(hKey, TEXT("Paper Width"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nHeight;
RegSetValueEx(hKey, TEXT("Paper Height"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->bLandscape;
RegSetValueEx(hKey, TEXT("Orientation"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nDither;
RegSetValueEx(hKey, TEXT("HalfTone"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nForm;
RegSetValueEx(hKey, TEXT("FormFeed"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->nScroll;
RegSetValueEx(hKey, TEXT("FormFeed Length"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->rcMargin.top;
RegSetValueEx(hKey, TEXT("Margin Top"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->rcMargin.bottom;
RegSetValueEx(hKey, TEXT("Margin Bottom"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->rcMargin.left;
RegSetValueEx(hKey, TEXT("Margin Left"), 0, dwType, (PBYTE)&dwData, cbData);
dwType = REG_DWORD; cbData = sizeof(DWORD);
dwData = lpParam->rcMargin.right;
RegSetValueEx(hKey, TEXT("Margin Right"), 0, dwType, (PBYTE)&dwData, cbData);
RegCloseKey(hKey);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -