📄 winstdforms.cpp
字号:
/* * * winstdforms.cpp * * I GOT THIS DATA FROM ANOTHER GNU PROJECT: * dvispool.cpp: MiKTeX Print Utility * AUTHOR: Christian Schenk <cs@miktex.org> * FOUND AT: http://cvs.ktug.or.kr/viewcvs/miktex-ktug/src/dvispool/dvispool.cpp?rev=HEAD&content-type=text/vnd.viewcvs-markup * Copyright (C) 2002-2003 Christian Schenk <cs@miktex.org> This file is part of MiKTeX Print Utility. MiKTeX Print Utility is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. MiKTeX Print Utility is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with MiKTeX Print Utility; if not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */#include "winstdforms.h"#include "..\lib\mathutils.h"#include "..\lib\utils.h"//********************************************************************************************//** MODULE PRIVATE TYPEDEFS AND FOREWARD DECLARATIONS ************************************//********************************************************************************************//********************************************************************************************//** MODULE PRIVATE DATA ******************************************************************//********************************************************************************************//#define mm2pt(mm) static_cast<int>((mm) * (1.0 / 25.4) * 72.0)//#define in2pt(inch) static_cast<int>((inch) * 72.0)//#define MM2PT(a, b) #a "mm," #b "mm", mm2pt(a), mm2pt(b)//#define IN2PT(a, b) #a "in," #b "in", in2pt(a), in2pt(b)#define MM2PT(a, b) L#a L"mm," L#b L"mm", RoundToLong( (a) * 1000.0 ), RoundToLong( (b) * 1000.0 )#define IN2PT(a, b) L#a L"in," L#b L"in", RoundToLong( (a) * MICROMETERS_PER_INCH ), RoundToLong( (b) * MICROMETERS_PER_INCH )static const PAPERSIZEINFO g_aPaperSizes[] = { DMPAPER_LETTER, L"Letter", IN2PT(8.5, 11), DMPAPER_LETTERSMALL, L"Letter Small", IN2PT(8.5, 11), DMPAPER_TABLOID, L"Tabloid", IN2PT(11, 17), DMPAPER_LEDGER, L"Ledger", IN2PT(17, 11), DMPAPER_LEGAL, L"Legal", IN2PT(8.5, 14), DMPAPER_STATEMENT, L"Statement", IN2PT(5.5, 8.5), DMPAPER_EXECUTIVE, L"Executive", IN2PT(7.25, 10.5), DMPAPER_A3, L"A3", MM2PT(297, 420), DMPAPER_A4, L"A4", MM2PT(210, 297), DMPAPER_A4SMALL, L"A4 Small", MM2PT(210, 297), DMPAPER_A5, L"A5", MM2PT(148, 210), DMPAPER_B4, L"B4", MM2PT(250, 354), // <fixme/> DMPAPER_B5, L"B5", MM2PT(182, 257), DMPAPER_FOLIO, L"Folio", IN2PT(8.5, 13), DMPAPER_QUARTO, L"Quarto", MM2PT(215, 275), // <fixme/> DMPAPER_10X14, L"10x14", IN2PT(10, 14), DMPAPER_11X17, L"11x17", IN2PT(11, 17), DMPAPER_NOTE, L"Note", IN2PT(8.5, 11), DMPAPER_ENV_9, L"Envelope #9", IN2PT(3.875, 8.875), DMPAPER_ENV_10, L"Envelope #10", IN2PT(4.125, 9.5), DMPAPER_ENV_11, L"Envelope #11", IN2PT(4.5, 10.375), DMPAPER_ENV_12, L"Envelope #12", IN2PT(4.75, 11), DMPAPER_ENV_14, L"Envelope #14", IN2PT(5, 11.5), DMPAPER_CSHEET, L"C", IN2PT(17, 22), DMPAPER_DSHEET, L"D", IN2PT(22, 34), DMPAPER_ESHEET, L"E", IN2PT(34, 44), DMPAPER_ENV_DL, L"Envelope DL", MM2PT(110, 220), DMPAPER_ENV_C5, L"Envelope C5", MM2PT(162, 229), DMPAPER_ENV_C3, L"Envelope C3 ", MM2PT(324, 458), DMPAPER_ENV_C4, L"Envelope C4 ", MM2PT(229, 324), DMPAPER_ENV_C6, L"Envelope C6 ", MM2PT(114, 162), DMPAPER_ENV_C65, L"Envelope C65", MM2PT(114, 229), DMPAPER_ENV_B4, L"Envelope B4 ", MM2PT(250, 353), DMPAPER_ENV_B5, L"Envelope B5 ", MM2PT(176, 250), DMPAPER_ENV_B6, L"Envelope B6 ", MM2PT(176, 125), DMPAPER_ENV_ITALY, L"Italy Envelope", MM2PT(110, 230), DMPAPER_ENV_MONARCH, L"Envelope Monarch", IN2PT(3.875, 7.5), DMPAPER_ENV_PERSONAL, L"6 3/4 Envelope", IN2PT(3.625, 6.5), DMPAPER_FANFOLD_US, L"US Std Fanfold", IN2PT(14.875, 11), DMPAPER_FANFOLD_STD_GERMAN, L"German Std Fanfold", IN2PT(8.5, 12), DMPAPER_FANFOLD_LGL_GERMAN, L"German Legal Fanfold", IN2PT(8.5, 13),#if(WINVER >= 0x0400) DMPAPER_ISO_B4, L"B4 (ISO)", MM2PT(250, 353), DMPAPER_JAPANESE_POSTCARD, L"Japanese Postcard", MM2PT(100, 148), DMPAPER_9X11, L"9x11", IN2PT(9, 11), DMPAPER_10X11, L"10x11", IN2PT(10, 11), DMPAPER_15X11, L"15x11", IN2PT(15, 11), DMPAPER_ENV_INVITE, L"Envelope Invite", MM2PT(220, 220), DMPAPER_LETTER_EXTRA, L"Letter Extra", IN2PT(9.5, 12), DMPAPER_LEGAL_EXTRA, L"Legal Extra", IN2PT(9.5, 15), DMPAPER_TABLOID_EXTRA, L"Tabloid Extra", IN2PT(11.69, 18), DMPAPER_A4_EXTRA, L"A4 Extra", IN2PT(9.27, 12.69), DMPAPER_LETTER_TRANSVERSE, L"Letter Transverse", IN2PT(8.5, 11), DMPAPER_A4_TRANSVERSE, L"A4 Transverse", MM2PT(210, 297), DMPAPER_LETTER_EXTRA_TRANSVERSE, L"Letter Extra Transverse", IN2PT(9.5, 12), DMPAPER_A_PLUS, L"SuperA/SuperA/A4", MM2PT(227, 356), DMPAPER_B_PLUS, L"SuperB/SuperB/A3", MM2PT(305, 487), DMPAPER_LETTER_PLUS, L"Letter Plus", IN2PT(8.5, 12.69), DMPAPER_A4_PLUS, L"A4 Plus", MM2PT(210, 330), DMPAPER_A5_TRANSVERSE, L"A5 Transverse", MM2PT(148, 210), DMPAPER_B5_TRANSVERSE, L"B5 (JIS) Transverse", MM2PT(182, 257), DMPAPER_A3_EXTRA, L"A3 Extra", MM2PT(322, 445), DMPAPER_A5_EXTRA, L"A5 Extra", MM2PT(174, 235), DMPAPER_B5_EXTRA, L"B5 (ISO) Extra", MM2PT(201, 276), DMPAPER_A2, L"A2", MM2PT(420, 594), DMPAPER_A3_TRANSVERSE, L"A3 Transverse", MM2PT(297, 420), DMPAPER_A3_EXTRA_TRANSVERSE, L"A3 Extra Transverse", MM2PT(322, 445),#endif /* WINVER >= 0x0400 */#if(WINVER >= 0x0500) DMPAPER_DBL_JAPANESE_POSTCARD, L"Japanese Double Postcard", MM2PT(200, 148), DMPAPER_A6, L"A6", MM2PT(105, 148), //#define DMPAPER_JENV_KAKU2 71 /* Japanese Envelope Kaku #2 */ //#define DMPAPER_JENV_KAKU3 72 /* Japanese Envelope Kaku #3 */ //#define DMPAPER_JENV_CHOU3 73 /* Japanese Envelope Chou #3 */ //#define DMPAPER_JENV_CHOU4 74 /* Japanese Envelope Chou #4 */ DMPAPER_LETTER_ROTATED, L"Letter Rotated", IN2PT(11, 8.5), DMPAPER_A3_ROTATED, L"A3 Rotated", MM2PT(420, 297), DMPAPER_A4_ROTATED, L"A4 Rotated", MM2PT(297, 210), DMPAPER_A5_ROTATED, L"A5 Rotated", MM2PT(210, 148), DMPAPER_B4_JIS_ROTATED, L"B4 (JIS) Rotated", MM2PT(364, 257), DMPAPER_B5_JIS_ROTATED, L"B5 (JIS) Rotated", MM2PT(257, 182), DMPAPER_JAPANESE_POSTCARD_ROTATED, L"Japanese Postcard Rotated", MM2PT(148, 100), DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, L"Double Japanese Postcard Rotated", MM2PT(148, 200), DMPAPER_A6_ROTATED, L"A6 Rotated", MM2PT(148, 105), //#define DMPAPER_JENV_KAKU2_ROTATED 84 /* Japanese Envelope Kaku #2 Rotated */ //#define DMPAPER_JENV_KAKU3_ROTATED 85 /* Japanese Envelope Kaku #3 Rotated */ //#define DMPAPER_JENV_CHOU3_ROTATED 86 /* Japanese Envelope Chou #3 Rotated */ //#define DMPAPER_JENV_CHOU4_ROTATED 87 /* Japanese Envelope Chou #4 Rotated */ DMPAPER_B6_JIS, L"B6 (JIS)", MM2PT(128, 182), DMPAPER_B6_JIS_ROTATED, L"B6 (JIS) Rotated", MM2PT(182, 128), DMPAPER_12X11, L"12x11", IN2PT(12, 11), //#define DMPAPER_JENV_YOU4 91 /* Japanese Envelope You #4 */ //#define DMPAPER_JENV_YOU4_ROTATED 92 /* Japanese Envelope You #4 Rotated*/ DMPAPER_P16K, L"PRC 16K", MM2PT(146, 215), DMPAPER_P32K, L"PRC 32K", MM2PT(97, 151), DMPAPER_P32KBIG, L"PRC 32K(Big)", MM2PT(97, 151), DMPAPER_PENV_1, L"PRC Envelope #1", MM2PT(102, 165), DMPAPER_PENV_2, L"PRC Envelope #2", MM2PT(102, 176), DMPAPER_PENV_3, L"PRC Envelope #3", MM2PT(125, 176), DMPAPER_PENV_4, L"PRC Envelope #4", MM2PT(110, 208), DMPAPER_PENV_5, L"PRC Envelope #5", MM2PT(110, 220), DMPAPER_PENV_6, L"PRC Envelope #6", MM2PT(120, 230), DMPAPER_PENV_7, L"PRC Envelope #7", MM2PT(160, 230), DMPAPER_PENV_8, L"PRC Envelope #8", MM2PT(120, 309), DMPAPER_PENV_9, L"PRC Envelope #9", MM2PT(229, 324), DMPAPER_PENV_10, L"PRC Envelope #10", MM2PT(324, 458), DMPAPER_P16K_ROTATED, L"PRC 16K Rotated", MM2PT(215, 146), DMPAPER_P32K_ROTATED, L"PRC 32K Rotated", MM2PT(151, 97), DMPAPER_P32KBIG_ROTATED, L"PRC 32K(Big) Rotated", MM2PT(151, 97), DMPAPER_PENV_1_ROTATED, L"PRC Envelope #1 Rotated", MM2PT(165, 102), DMPAPER_PENV_2_ROTATED, L"PRC Envelope #2 Rotated", MM2PT(176, 102), DMPAPER_PENV_3_ROTATED, L"PRC Envelope #3 Rotated", MM2PT(176, 125), DMPAPER_PENV_4_ROTATED, L"PRC Envelope #4 Rotated", MM2PT(208, 110), DMPAPER_PENV_5_ROTATED, L"PRC Envelope #5 Rotated", MM2PT(220, 110), DMPAPER_PENV_6_ROTATED, L"PRC Envelope #6 Rotated", MM2PT(230, 120), DMPAPER_PENV_7_ROTATED, L"PRC Envelope #7 Rotated", MM2PT(230, 160), DMPAPER_PENV_8_ROTATED, L"PRC Envelope #8 Rotated", MM2PT(309, 120), DMPAPER_PENV_9_ROTATED, L"PRC Envelope #9 Rotated", MM2PT(324, 229), DMPAPER_PENV_10_ROTATED, L"PRC Envelope #10 Rotated", MM2PT(458, 324),#endif /* WINVER >= 0x0500 */};//********************************************************************************************//** MODULE PUBLIC ROUTINES ****************************************************************//********************************************************************************************const PAPERSIZEINFO* LookupPaperSize(IN DWORD dmPaperSize) { for(unsigned int k = 0; k < ARRCOUNT(g_aPaperSizes); ++k) { if (g_aPaperSizes[k].dmPaperSize == dmPaperSize) { return &g_aPaperSizes[k]; } } return NULL;}unsigned int GetPaperSizeCount(void) { unsigned int n = ARRCOUNT(g_aPaperSizes); return n;}const PAPERSIZEINFO* GetPaperSizeAtIndex(IN unsigned int kForm) { ASSERT(kForm < ARRCOUNT(g_aPaperSizes)); const PAPERSIZEINFO* ppsiRetValue = &g_aPaperSizes[kForm]; return ppsiRetValue;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -