6 * Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
37 BOOL bDigitGrouping
= FALSE
;
40 #define BEGIN_CMD_MAP(a) switch(##a) {
41 #define CMD_MAP_ENTRY(a, b) case a: b(); break;
42 #define END_CMD_MAP(a) }
45 BOOL
OnCreate(HWND hWnd
)
50 hMenu
= GetMenu(hDlgWnd
);
51 hViewMenu
= GetSubMenu(hMenu
, ID_MENU_VIEW
);
53 CheckMenuItem(hViewMenu
, ID_VIEW_DIGIT_GROUPING
, MF_BYCOMMAND
|MF_CHECKED
);
56 //SendMessage(hDlgWnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, MAKEINTRESOURCE(IDI_CALC)));
58 // Initialize the Windows Common Controls DLL
59 //InitCommonControls();
66 SendMessage(GetDlgItem(hDlgWnd
, IDC_EDIT1
), WM_COMMAND
, MAKELONG(ID_EDIT_COPY
, 0), 0);
69 void OnEditPaste(void)
71 SendMessage(GetDlgItem(hDlgWnd
, IDC_EDIT1
), WM_COMMAND
, MAKELONG(ID_EDIT_PASTE
, 0), 0);
74 void OnViewStandard(void)
77 DestroyWindow(hDlgWnd
);
80 void OnViewScientific(void)
82 CalcType
= SCIENTIFIC
;
83 DestroyWindow(hDlgWnd
);
86 void OnViewDigitGrouping(void)
88 HMENU hMenu
= GetMenu(hDlgWnd
);
89 HMENU hViewMenu
= GetSubMenu(hMenu
, ID_MENU_VIEW
);
90 bDigitGrouping
= !bDigitGrouping
;
92 CheckMenuItem(hViewMenu
, ID_VIEW_DIGIT_GROUPING
, MF_BYCOMMAND
|MF_CHECKED
);
94 CheckMenuItem(hViewMenu
, ID_VIEW_DIGIT_GROUPING
, MF_BYCOMMAND
|MF_UNCHECKED
);
98 void OnHelpTopics(void)
100 WinHelp(hDlgWnd
, _T("calc"), HELP_CONTENTS
, 0);
103 void OnHelpAbout(void)
107 // Message handler for dialog box.
108 LRESULT CALLBACK
CalcWndProc(HWND hDlg
, UINT message
, WPARAM wParam
, LPARAM lParam
)
114 return OnCreate(hDlg
);
117 DrawItem((LPDRAWITEMSTRUCT
)lParam
);
121 if (LOWORD(wParam
) == IDOK
|| LOWORD(wParam
) == IDCANCEL
) {
122 EndDialog(hDlg
, LOWORD(wParam
));
126 if (HIWORD(wParam
) == BN_CLICKED
) {
127 switch (LOWORD(wParam
)) {
128 // case IDC_OWNERDRAW:
129 // // application-defined processing
134 BEGIN_CMD_MAP(LOWORD(wParam
))
135 CMD_MAP_ENTRY(ID_EDIT_COPY
, OnEditCopy
)
136 CMD_MAP_ENTRY(ID_EDIT_PASTE
, OnEditPaste
)
137 CMD_MAP_ENTRY(ID_VIEW_STANDARD
, OnViewStandard
)
138 CMD_MAP_ENTRY(ID_VIEW_SCIENTIFIC
, OnViewScientific
)
139 CMD_MAP_ENTRY(ID_VIEW_DIGIT_GROUPING
, OnViewDigitGrouping
)
140 CMD_MAP_ENTRY(ID_HELP_TOPICS
, OnHelpTopics
)
141 CMD_MAP_ENTRY(ID_HELP_ABOUT
, OnHelpAbout
)
149 idctrl
= (int)wParam
;
150 pnmh
= (LPNMHDR
)lParam
;
152 if ((pnmh->hwndFrom == hTabWnd) &&
153 (pnmh->idFrom == IDC_TAB) &&
154 (pnmh->code == TCN_SELCHANGE))
156 _OnTabWndSelChange();
163 WinHelp(hDlgWnd
, _T("regedit"), HELP_QUIT
, 0);
164 return DefWindowProc(hDlg
, message
, wParam
, lParam
);
169 int APIENTRY
WinMain(HINSTANCE hInstance
,
170 HINSTANCE hPrevInstance
,
174 CALC_TYPES CurrentCalcType
;
176 // Initialize global variables
179 // Load our settings from the registry
183 CurrentCalcType
= CalcType
;
188 DialogBox(hInst
, (LPCTSTR
)IDD_SCIENTIFIC
, NULL
, (DLGPROC
)CalcWndProc
);
192 DialogBox(hInst
, (LPCTSTR
)IDD_STANDARD
, NULL
, (DLGPROC
)CalcWndProc
);
195 } while (CalcType
!= CurrentCalcType
);
197 // Save our settings to the registry