Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

607 lines
20 KiB

  1. /* FROST.H
  2. Include file for Frosting project.
  3. Frosting: Master Theme Selector for Windows '95
  4. Copyright (c) 1994-1999 Microsoft Corporation. All rights reserved.
  5. */
  6. #ifdef DBG
  7. #define _DEBUG
  8. #define DEBUG
  9. #endif
  10. //-----------------------
  11. // D I A L O G I D S
  12. //-----------------------
  13. // dialog box IDs
  14. #define DLG_MAIN 10
  15. #define DLG_SAVE 12
  16. //#define DLG_ETC 14
  17. #define DLG_BPPCHOICE 20
  18. #define DLGPROP_PTRS 30
  19. #define DLGPROP_SNDS 32
  20. #define DLGPROP_PICS 34
  21. // Common control IDs
  22. #define IDC_STATIC -1
  23. //
  24. // PREVIEW DIALOG CONTROL IDS
  25. // Theme groupbox
  26. #define DDL_THEME 100
  27. #define PB_SAVE 110
  28. #define PB_DELETE 120
  29. #define RECT_PREVIEW 130
  30. #define RECT_FAKEWIN 140
  31. #define RECT_ICONS 150
  32. #define TEXT_VIEW 160
  33. // Previews groupbox
  34. #define PB_SCRSVR 200
  35. #define PB_POINTERS 210
  36. // Settings groupbox
  37. #define CB_SCRSVR 300
  38. #define CB_SOUND 310
  39. #define CB_PTRS 320
  40. #define CB_WALL 330
  41. #define CB_ICONS 340
  42. //#define CB_ICONSIZE 345
  43. #define CB_COLORS 350
  44. #define CB_FONTS 360
  45. #define CB_BORDERS 370
  46. #define CB_SCHEDULE 380
  47. // Control buttons
  48. #define PB_APPLY 400
  49. // FOR PREVIEW SAMPLE
  50. // appearance preview menu
  51. #define IDR_MENU 1
  52. #define IDM_NORMAL 10
  53. #define IDM_DISABLED 11
  54. #define IDM_SELECTED 12
  55. //
  56. // SAVEAS DIALOG CONTROL IDS
  57. #define EC_THEME 500
  58. //
  59. // POINTERS/ETC DIALOG CONTROL IDS
  60. #define PB_TEST 600
  61. #define PB_PLAY 602
  62. #define LB_PTRS 610
  63. #define LB_SNDS 612
  64. #define LB_PICS 614
  65. #define TXT_FILENAME 620
  66. //
  67. // Theme BPP choice dlg
  68. #define RB_ALL 700
  69. #define RB_SOME 701
  70. #define RB_NONE 702
  71. #define CB_CUT_IT_OUT 730
  72. //
  73. // NT Task Scheduler Username/Password dialog
  74. #define STR_PW_NOMATCH 27
  75. #define STR_PWTITLE 28
  76. #define DLG_PASSWORD 101
  77. #define EDIT_USER 1000
  78. #define EDIT_PW 1001
  79. #define EDIT_PWCONFIRM 1002
  80. #define STATIC_PW 1003
  81. #define STATIC_PWCONFIRM 1004
  82. #define STATIC_USER 1005
  83. #define STATIC_PWDESC 1006
  84. //-----------------------
  85. // S T R I N G I D S
  86. //-----------------------
  87. // important constants for strings
  88. #define MAX_STRLEN 80 // TRANSLATORS: English strs max 40
  89. #define MAX_PATHLEN MAX_PATH // fullpathname/filename max
  90. // note windef.h has 260; 255 for file
  91. // note2 -- dschott changed from 255 to
  92. // MAX_PATH
  93. #define MAX_MSGLEN 512 // TRANSLATORS: English strs max 256
  94. // MAX_MSGLEN must be at least 2xMAX_STRLEN
  95. // MAX_MSGLEN must be at least 2xMAX_PATHLEN
  96. //
  97. // Try to keep the general strings and low mem strings
  98. // ids within the range of 0-15, one resource block at boot.
  99. // WARNING -- STR_APPNAME is also defined in HTMLPREV.CPP
  100. // general strings
  101. #define STR_APPNAME 0
  102. #define STR_CURSET 1
  103. #define STR_PREVSET 2
  104. #define STR_THMEXT 3
  105. #define STR_FILETYPE 4
  106. #define STR_THEMESUBDIR 5
  107. #define STR_PREVIEWTITLE 6
  108. #define STR_HELPFILE 7
  109. #define STR_PREVIEWDLG 8
  110. #define STR_OTHERTHM 9
  111. #define STR_HELPFILE98 700
  112. #define STR_JOB_NAME 701
  113. #define STR_JOB_COMMENT 702
  114. // low mem strings
  115. #define STR_NOT_ENUF 10 // THIS LOWMEM STRING MUST COME FIRST
  116. // OTHER LOWMEM STRS MUST BE SQUENTIAL
  117. #define STR_TO_RUN 11
  118. #define STR_TO_SAVE 12
  119. #define STR_TO_LIST 13
  120. #define STR_TO_PREVIEW 14
  121. #define STR_TO_APPLY 15
  122. #define NUM_NOMEM_STRS 6 // KEEP THIS UPDATED IF ADDING LOWMEM STRS
  123. // counts not enuf str + all the to strs
  124. // error strings
  125. #define STR_ERRBADTHEME 16 // theme file in list didn't pass verification
  126. #define STR_ERRBADOPEN 17 // theme file in open didn't pass verification
  127. #define STR_ERRCANTDEL 18 // problem deleting
  128. #define STR_ERRAPPLY 19 // couldn't apply everything
  129. #define STR_ERRCANTSAVE 20 // couldn't write theme to file
  130. #define STR_ERRNEEDSPACE 21 // Not enough space on drive to apply theme
  131. #define STR_ERRTSNOTRUN 22 // Task Scheduler is not running -- want to start?
  132. #define STR_ERRTSNOTFOUND 23 // MSTASK.EXE could not be found
  133. #define STR_ERRTSNOSTART 24 // Error starting Task Scheduler
  134. #define STR_ERRTS 25 // Error accessing Task Scheduler
  135. // WARNING STR_ERRHTML is also defined in HTMLPREV.CPP
  136. #define STR_ERRHTML 26 // Error getting HTML wallpaper preview
  137. #define STR_ERRNOUNICODE 29 // Error trying to run UNICODE binary on Win9x or NT ver not Win2000
  138. #define STR_ERRTSNOTADMIN 30 // Error, can't turn on TS because not admin
  139. #define STR_ERRBAD9XVER 31 // Error, trying to run on Win9x platform that is not Win98 or later
  140. // misc strings
  141. #define STR_CONFIRM_DEL 32
  142. #define STR_SUGGEST 33
  143. #define STR_SAVETITLE 34
  144. #define STR_OPENTITLE 35
  145. #define STR_PREVSETFILE 36
  146. #define STR_FILEEXISTS 37 // file already exists text
  147. #define STR_WHATSTHIS 43
  148. // icon preview label texts
  149. #define STR_MYCOMPUTER 44 // ORDER AND CONTIGUITY MATTERS
  150. #define STR_NETNHBD 45 // change with order of fsRoot in keys.h
  151. #define STR_TRASH 46
  152. #define STR_MYDOCS 47
  153. // property sheet titles
  154. #define STR_TITLE_ETC 48 // prop sheet title
  155. #define STR_TITLE_PTRS 49 // tab titles
  156. #define STR_TITLE_SNDS 50
  157. #define STR_TITLE_PICS 51
  158. // appearance strings for preview sample window
  159. #define IDS_ACTIVE 52
  160. #define IDS_INACTIVE 53
  161. #define IDS_MINIMIZED 54
  162. #define IDS_ICONTITLE 55
  163. #define IDS_NORMAL 56
  164. #define IDS_DISABLED 57
  165. #define IDS_SELECTED 58
  166. #define IDS_MSGBOX 59
  167. #define IDS_BUTTONTEXT 60
  168. #define IDS_SMCAPTION 61
  169. #define IDS_WINDOWTEXT 62
  170. #define IDS_MSGBOXTEXT 63
  171. // strings for cursor dialog listbox
  172. #define STR_CUR_ARROW 64
  173. #define STR_CUR_HELP 65
  174. #define STR_CUR_APPSTART 66
  175. #define STR_CUR_WAIT 67
  176. #define STR_CUR_NWPEN 68
  177. #define STR_CUR_NO 69
  178. #define STR_CUR_SIZENS 70
  179. #define STR_CUR_SIZEWE 71
  180. #define STR_CUR_CROSSHAIR 72
  181. #define STR_CUR_IBEAM 73
  182. #define STR_CUR_SIZENWSE 74
  183. #define STR_CUR_SIZENESW 75
  184. #define STR_CUR_SIZEALL 76
  185. #define STR_CUR_UPARROW 77
  186. // strings for sounds dialog listbox
  187. #define STR_SND_DEF 80
  188. #define STR_SND_GPF 81
  189. #define STR_SND_MAX 82
  190. #define STR_SND_MENUCMD 83
  191. #define STR_SND_MENUPOP 84
  192. #define STR_SND_MIN 85
  193. #define STR_SND_OPEN 86
  194. #define STR_SND_CLOSE 87
  195. #define STR_SND_RESTDOWN 88
  196. #define STR_SND_RESTUP 89
  197. #define STR_SND_RINGIN 90
  198. #define STR_SND_RINGOUT 91
  199. #define STR_SND_SYSASTER 92
  200. #define STR_SND_SYSDEF 93
  201. #define STR_SND_SYSEXCL 94
  202. #define STR_SND_SYSEXIT 95
  203. #define STR_SND_SYSHAND 96
  204. #define STR_SND_SYSQUEST 97
  205. #define STR_SND_SYSSTART 98
  206. #define STR_SND_TOSSTRASH 99
  207. #define STR_SND_MAILBEEP 100
  208. // strings for visuals dialog listbox
  209. #define STR_PIC_WALL 106
  210. #define STR_PIC_MYCOMP 107
  211. #define STR_PIC_NETHOOD 108
  212. #define STR_PIC_RECBINFULL 109
  213. #define STR_PIC_RECBINEMPTY 110
  214. #define STR_PIC_MYDOCS 111
  215. #define STR_PIC_SCRSAV 112
  216. //---------------------
  217. // O T H E R I D S
  218. //---------------------
  219. #define FROST_ICON 40
  220. #define PLAY_BITMAP 1
  221. #define BMP_QUESTION 2
  222. //------------------------------------------------
  223. // Flags for IActiveDesktop::GetWallpaperOptions()
  224. // IActiveDesktop::SetWallpaperOptions()
  225. //
  226. // stolen from SHLOBJ.H
  227. //------------------------------------------------
  228. #define WPSTYLE_CENTER 0
  229. #define WPSTYLE_TILE 1
  230. #define WPSTYLE_STRETCH 2
  231. #define WPSTYLE_MAX 3
  232. //---------------------
  233. // C O N S T A N T S
  234. //---------------------
  235. #define ICON_WIDTH 32 // change if you change icon to dif size!
  236. #define ICON_HEIGHT 32
  237. #define APPLY_ALL 1 // for low color apply filter flag
  238. #define APPLY_SOME 2
  239. #define APPLY_NONE 3
  240. //SYNCHRONIZATION ALERT -- dependent on values in ADDON.H
  241. #define HELP_PLUS98 2028 // Help topics with this ID or greater are
  242. // found in PLUS!98.HLP.
  243. //------------------------------------
  244. // O T H E R U S E F U L S T U F F
  245. //------------------------------------
  246. #define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
  247. #define SZSIZEINBYTES(x) (lstrlen(x)*sizeof(TCHAR)+1)
  248. // *** NUMBER AND ORDER ALERT
  249. //
  250. // WARNING: keep these up to date when change ETCDLG.C and/or KEYS.H
  251. //
  252. // *** NUMBER AND ORDER ALERT
  253. #define NUM_CURSORS 14
  254. #define FIRST_SOUND 2 // 0-based
  255. #define NUM_SOUNDS 21
  256. // SYNCHRONIZATION WARNING!! -- Keep in SYNC with pRegColors[] array
  257. // in REGUTILS.C.
  258. #define INDEX_ACTIVE 0
  259. #define INDEX_INACTIVE 8
  260. #define INDEX_GRADIENTACTIVE 27
  261. #define INDEX_GRADIENTINACTIVE 28
  262. // for ConfirmFile()
  263. #define CF_EXISTS 1
  264. #define CF_FOUND 2
  265. #define CF_NOTFOUND 3
  266. //---------------------
  267. // T Y P E S
  268. //---------------------
  269. typedef struct {
  270. TCHAR *szValName; // register key value name
  271. int iValType; // REG_* flag for value type to read/write
  272. BOOL bValRelPath; // relative pathname file string in this val?
  273. int fValCheckbox; // chkbox that controls setting this value
  274. } FROST_VALUE;
  275. typedef struct {
  276. TCHAR *szSubKey; // register subkey name string,
  277. // below ROOT or CUR_USER
  278. int fValues; // flag for number/type of values; see below
  279. BOOL bDefRelPath; // relative pathname file str? for deflt str
  280. FROST_VALUE *fvVals; // pointer to array of valuenames
  281. int iNumVals; // number of values
  282. int fDefCheckbox; // chkbox that controls setting Default str
  283. } FROST_SUBKEY;
  284. typedef struct {
  285. DWORD dwControlID;
  286. DWORD dwHelpContextID;
  287. } POPUP_HELP_ARRAY;
  288. // defs for fValues field
  289. #define FV_DEFAULT 1 // single value associated with this key
  290. // name; like old INI file routines
  291. // save time, space, energy for common case.
  292. // fvVals is not used in this case.
  293. #define FV_LIST 2 // normal case of array of FROST_VALUEs
  294. #define FV_LISTPLUSDEFAULT 3 // normal list like FV_LIST, AND one member
  295. // of which is the default string
  296. //
  297. // defs for fValCheckbox and fDefCheckbox fields
  298. #define FC_SCRSVR 0
  299. #define FC_SOUND 1
  300. #define FC_PTRS 2
  301. #define FC_WALL 3
  302. #define FC_ICONS 4
  303. //#define FC_ICONSIZE 5
  304. #define FC_COLORS 5
  305. #define FC_FONTS 6
  306. #define FC_BORDERS 7
  307. #define FC_SCHEDULE 8
  308. #define FC_NULL 9 // for fDefCheckbox with no def str
  309. //
  310. // string constant
  311. #define FROST_DEFSTR TEXT("DefaultValue")
  312. // default icon to apply if Theme file doesn't have MyDocs icon setting
  313. #define MYDOC_DEFSTR TEXT("mydocs.dll,0")
  314. //
  315. // macros
  316. #define WaitCursor(); SetCursor(LoadCursor(NULL, IDC_WAIT));
  317. #define NormalCursor(); SetCursor(LoadCursor(NULL, IDC_ARROW));
  318. /////////////////////////////
  319. //
  320. // Debugging utility macro
  321. //
  322. /////////////////////////////
  323. // Very simple assertion tool
  324. #ifdef _DEBUG
  325. __inline void ods(LPTSTR sz)
  326. {
  327. OutputDebugString(sz);
  328. if (*sz && sz[lstrlen(sz)-1] == TEXT('\n'))
  329. OutputDebugString(TEXT("\r"));
  330. }
  331. #define Assert(p,s); if(!(p)) { ods(s); };
  332. #else
  333. #define Assert(p,s);
  334. #endif
  335. //----------------------------------
  336. // G L O B A L V A R I A B L E S
  337. //----------------------------------
  338. //HWND hWndApp; // main application window handle
  339. //HINSTANCE hInstApp; // application instance handle
  340. HICON hIconFrost; // application icon, has to be painted by hand
  341. BOOL bNoMem; // dialog init flag for out of mem
  342. BOOL g_bGradient; // Enuf colors for gradient captions?
  343. BOOL bLowColorProblem; // potential prob w/ theme colors > system
  344. BOOL bNeverCheckBPP; // from BPP Choice dlg; remember per session
  345. int fLowBPPFilter; // flag saying how to filter apply when bLowColorProblem is true
  346. RECT rView; // preview area of dlg
  347. RECT rFakeWin; // fake sample window within preview area
  348. RECT rPreviewIcons; // bounding rect for icon samples in preview area
  349. int iThemeCount; // num of items in theme DDL, incl Cur and Other...
  350. int iCurTheme; // 0-based index of cur theme in list
  351. extern TCHAR *pRegColors[]; // have to be def'd in REGUTILS.C for sizing
  352. extern int iSysColorIndices[];
  353. extern BOOL gfCoInitDone; // track state of OLE CoInitialize()
  354. // strings
  355. TCHAR szAppName[MAX_STRLEN+1]; // application name
  356. TCHAR szMsg[MAX_MSGLEN+1]; // scratch buffer
  357. TCHAR szCurSettings[MAX_STRLEN+1];// "Current Windows settings" for DDLbox
  358. TCHAR szPrevSettings[MAX_STRLEN+1];// "Previous Windows settings" for DDLbox
  359. TCHAR szPrevSettingsFilename[MAX_STRLEN+1]; // theme file w/prev settings, no path
  360. TCHAR szOther[MAX_STRLEN+1]; // "Other..." for DDLbox
  361. TCHAR szNewFile[MAX_STRLEN+1]; // suggested new filename on save theme
  362. TCHAR szExt[MAX_STRLEN+1]; // THM file extension for theme files
  363. TCHAR szFileTypeDesc[MAX_STRLEN+1]; // for save/open file type description
  364. TCHAR szPreviewTitle[MAX_STRLEN+1]; // Preview of "Foo" title at bottom of dlg
  365. TCHAR szSaveTitle[MAX_STRLEN+1]; // title for saveas dlg
  366. TCHAR szOpenTitle[MAX_STRLEN+1]; // title for open dlg
  367. TCHAR szHelpFile[MAX_PATH]; // Help file name; no path nec.; Plus!95
  368. TCHAR szHelpFile98[MAX_PATH]; // Help file name for Plus! 98 new topics
  369. TCHAR szThemeDir[MAX_PATHLEN+1]; // dir of most theme files
  370. TCHAR szWinDir[MAX_PATHLEN+1]; // Windows directory
  371. TCHAR szCurDir[MAX_PATHLEN+1]; // last dir opened a theme file from
  372. TCHAR szCurThemeFile[MAX_PATHLEN+1]; // path + filename of cur theme file
  373. TCHAR szCurThemeName[MAX_PATHLEN+1]; // just name, no path and no extension
  374. #define MAX_VALUELEN 1024 // extra meaty length for safety
  375. extern TCHAR pValue[]; // multi-use buffer: char, hex string, etc.
  376. //
  377. // Checkbox states, ids and values
  378. // important that this is coordinated with FC_* in keys.h !!!!
  379. #define MAX_FCHECKS 9 // don't need one for NULL case
  380. BOOL bCBStates[MAX_FCHECKS]; // main window checkbox states
  381. // WebView names number must be consistent with szWVNames[] below
  382. #define MAX_WVNAMES 3 // number of WebView artwork files
  383. // if in root file
  384. #ifdef ROOTFILE
  385. //
  386. // Consistency Alert! the number of elements here should match MAX_FCHECKS above
  387. int iCBIDs[] = {CB_SCRSVR,
  388. CB_SOUND,
  389. CB_PTRS,
  390. CB_WALL, // checkbox IDs
  391. CB_ICONS,
  392. CB_COLORS,
  393. CB_FONTS,
  394. CB_BORDERS,
  395. CB_SCHEDULE };
  396. // CB_ICONS, CB_ICONSIZE, CB_COLORS, CB_FONTS, CB_BORDERS };
  397. TCHAR * szCBNames[] = { TEXT("Screen saver"),
  398. TEXT("Sound events"),
  399. TEXT("Mouse pointers"),
  400. TEXT("Desktop wallpaper"),
  401. TEXT("Icons"),
  402. // TEXT("Icon size and spacing"),
  403. TEXT("Colors"),
  404. TEXT("Font names and styles"),
  405. TEXT("Font and window sizes"),
  406. TEXT("Rotate theme monthly")
  407. };
  408. TCHAR szNULL[] = TEXT("");
  409. TCHAR szColorApp[] = TEXT("Control Panel\\Colors");
  410. TCHAR szClassName[] = TEXT("DesktopThemes");
  411. // Names of the WebView artwork files -- found in \windir\web
  412. //
  413. // Consistency alert -- number of items must match MAX_WVNAMES
  414. // defined above!
  415. TCHAR * szWVNames[] = { TEXT("WVLEFT.BMP"),
  416. TEXT("WVLINE.GIF"),
  417. TEXT("WVLOGO.GIF")
  418. };
  419. #else // else not root file
  420. extern int iCBIDs[];
  421. extern TCHAR * szCBNames[];
  422. extern TCHAR szNULL[];
  423. extern TCHAR szColorApp[];
  424. extern TCHAR szClassName[];
  425. extern TCHAR * szWVNames[];
  426. // end if root file
  427. #endif
  428. //---------------------------
  429. // F A R R O U T I N E S
  430. //---------------------------
  431. // frost.c
  432. INT_PTR FAR PASCAL PreviewDlgProc(HWND, UINT, WPARAM, LPARAM);
  433. void FAR EnableThemeButtons();
  434. #ifdef USECALLBACKS
  435. UINT_PTR FAR PASCAL FileOpenHookProc(HWND, UINT, WPARAM, LPARAM);
  436. #endif
  437. // init.c
  438. BOOL FAR InitFrost(HINSTANCE, HINSTANCE, LPTSTR, int);
  439. void FAR SaveStates();
  440. void FAR CloseFrost();
  441. #ifdef FOO
  442. // savedlg.c
  443. INT_PTR FAR PASCAL SaveAsDlgProc(HWND, UINT, WPARAM, LPARAM);
  444. #endif
  445. // etcdlg.c
  446. INT_PTR FAR DoEtcDlgs(HWND);
  447. // regutils.c
  448. void GetRegString(HKEY hkey, LPCTSTR szKey, LPCTSTR szValue, LPCTSTR szDefault, LPTSTR szBuffer, UINT cbBuffer);
  449. int GetRegInt(HKEY hkey, LPCTSTR szKey, LPCTSTR szValue, int def);
  450. BOOL FAR GatherThemeToFile(LPTSTR);
  451. BOOL FAR ApplyThemeFile(LPTSTR);
  452. VOID FAR InstantiatePath(LPTSTR, int);
  453. int FAR ConfirmFile(LPTSTR, BOOL);
  454. COLORREF FAR RGBStringToColor(LPTSTR);
  455. void FAR ColorToRGBString(LPTSTR, COLORREF);
  456. BOOL FAR HandGet(HKEY hKeyRoot, LPTSTR lpszSubKey, LPTSTR lpszValName, LPTSTR lpszRet);
  457. // void FAR SetCheckboxesFromThemeFile(LPTSTR);
  458. // void FAR SetCheckboxesFromRegistry();
  459. BOOL GetWVFilename(LPCTSTR, LPCTSTR, LPTSTR);
  460. // bkgd.c
  461. void FAR PASCAL BuildPreviewBitmap(LPTSTR lpszThemeFile);
  462. void FAR PaintPreview(HWND, HDC, PRECT);
  463. // bkgdutil.c
  464. BOOL FAR PASCAL PreviewInit(void);
  465. void FAR PASCAL PreviewDestroy(void);
  466. HRESULT ExtractPlusColorIcon(LPCTSTR szPath, int nIndex, HICON *phIcon, UINT uSizeLarge, UINT uSizeSmall);
  467. // fakewin.c
  468. BOOL FAR PASCAL FakewinInit(void);
  469. void FAR PASCAL FakewinDestroy(void);
  470. void FAR FakewinSetTheme(LPTSTR);
  471. void FAR PASCAL FakewinDraw(HDC);
  472. // icons.c
  473. BOOL FAR PASCAL IconsPreviewInit(void);
  474. void FAR PASCAL IconsPreviewDestroy(void);
  475. void FAR PASCAL IconsPreviewDraw(HDC, LPTSTR);
  476. // utils.c
  477. void FAR InitNoMem(HANDLE);
  478. void FAR NoMemMsg(int);
  479. void FAR TruncateExt(LPCTSTR);
  480. LPTSTR FAR FileFromPath(LPCTSTR);
  481. LPTSTR FAR FindChar(LPTSTR, TCHAR);
  482. VOID FAR litoa(int, LPSTR);
  483. int FAR latoi( LPSTR );
  484. BOOL FAR FilenameToShort(LPTSTR lpszInput, LPTSTR lpszShort);
  485. BOOL FAR FilenameToLong(LPTSTR lpszInput, LPTSTR lpszLong);
  486. BOOL FAR IsValidThemeFile(LPTSTR);
  487. BOOL FAR CheckSpace (HWND hWnd, BOOL fComplain); // Defined in Regutils.c
  488. // nc.c
  489. VOID FAR TransmitFontCharacteristics(PLOGFONT, PLOGFONT, int);
  490. #define TFC_STYLE 1
  491. #define TFC_SIZE 2
  492. // cb.c
  493. void FAR InitCheckboxes();
  494. void FAR SaveCheckboxes();
  495. void FAR RestoreCheckboxes();
  496. BOOL FAR IsAnyBoxChecked();