/[H6]/h6-udlånssystemDlg.cpp
ViewVC logotype

Annotation of /h6-udlånssystemDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 53 - (hide annotations) (download)
Mon Sep 11 14:02:08 2006 UTC (17 years, 6 months ago) by torben
File size: 4834 byte(s)
On config-file error, make sure the application shuts down immediately
1 torben 31 /*
2     * Developed by Torben H. Nielsen
3     */
4 torben 1
5 torben 31
6 torben 1 #include "stdafx.h"
7     #include "h6-udlånssystem.h"
8     #include "h6-udlånssystemDlg.h"
9 torben 3 #include ".\h6-udlånssystemdlg.h"
10 torben 1
11 torben 47 #include "ConfigFile.h"
12 torben 9 #include "commonstorage.h"
13 torben 47
14 torben 9 #include "databaselayer.h"
15 torben 41 #include "microsoftdblayer.h"
16     #include "mysqllayer.h"
17 torben 47 #include "postgreslayer.h"
18 torben 9
19 torben 1 #ifdef _DEBUG
20     #define new DEBUG_NEW
21     #endif
22    
23    
24     // CAboutDlg dialog used for App About
25    
26     class CAboutDlg : public CDialog
27     {
28     public:
29     CAboutDlg();
30    
31     // Dialog Data
32     enum { IDD = IDD_ABOUTBOX };
33    
34     protected:
35     virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
36    
37     // Implementation
38     protected:
39     DECLARE_MESSAGE_MAP()
40     };
41    
42     CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
43     {
44     }
45    
46     void CAboutDlg::DoDataExchange(CDataExchange* pDX)
47     {
48     CDialog::DoDataExchange(pDX);
49     }
50    
51     BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
52     END_MESSAGE_MAP()
53    
54    
55     // Ch6udlnssystemDlg dialog
56    
57    
58    
59     Ch6udlnssystemDlg::Ch6udlnssystemDlg(CWnd* pParent /*=NULL*/)
60     : CDialog(Ch6udlnssystemDlg::IDD, pParent)
61     {
62     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
63     }
64    
65     void Ch6udlnssystemDlg::DoDataExchange(CDataExchange* pDX)
66     {
67     CDialog::DoDataExchange(pDX);
68 torben 4 DDX_Control(pDX, IDC_TAB, m_tabs);
69 torben 1 }
70    
71     BEGIN_MESSAGE_MAP(Ch6udlnssystemDlg, CDialog)
72     ON_WM_SYSCOMMAND()
73     ON_WM_PAINT()
74     ON_WM_QUERYDRAGICON()
75     //}}AFX_MSG_MAP
76 torben 3 ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
77 torben 9 ON_COMMAND(ID_FILE_EXIT, OnFileExit)
78 torben 1 END_MESSAGE_MAP()
79    
80    
81     // Ch6udlnssystemDlg message handlers
82    
83     BOOL Ch6udlnssystemDlg::OnInitDialog()
84     {
85     CDialog::OnInitDialog();
86 torben 30 CWaitCursor wait;
87 torben 1
88     // Add "About..." menu item to system menu.
89    
90     // IDM_ABOUTBOX must be in the system command range.
91     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
92     ASSERT(IDM_ABOUTBOX < 0xF000);
93    
94     CMenu* pSysMenu = GetSystemMenu(FALSE);
95     if (pSysMenu != NULL)
96     {
97     CString strAboutMenu;
98     strAboutMenu.LoadString(IDS_ABOUTBOX);
99     if (!strAboutMenu.IsEmpty())
100     {
101     pSysMenu->AppendMenu(MF_SEPARATOR);
102     pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
103     }
104     }
105    
106     // Set the icon for this dialog. The framework does this automatically
107     // when the application's main window is not a dialog
108     SetIcon(m_hIcon, TRUE); // Set big icon
109     SetIcon(m_hIcon, FALSE); // Set small icon
110    
111 torben 4 m_tabs.InsertItem(0,"Search");
112     m_tabs.InsertItem(1,"Result");
113     m_tabs.InsertItem(2,"Administration");
114     m_tabs.Init();
115     m_tabs.SetCurSel(0);
116    
117 torben 47 ConfigFile config;
118     try {
119     config.Read();
120     } catch(...) {
121     MessageBox("Could not open config file");
122     OnOK();
123 torben 53 return true;
124 torben 47 }
125 torben 9
126 torben 23 try {
127 torben 47 DatabaseLayer *dbl = 0;
128     if (config.driver.MakeLower() == "mysql")
129     dbl = new MySQLLayer(config);
130     else if (config.driver.MakeLower() == "postgresql")
131     dbl = new PostgresLayer(config);
132     else if (config.driver.MakeLower() == "microsoftsql")
133     dbl = new MicrosoftDBLayer(config);
134     else {
135     CString tmp;
136     tmp.Format("Unsupported driver: %s", config.driver);
137     MessageBox(tmp);
138     OnOK();
139     }
140 torben 23 CommonStorage::Instance()->setDBLayer(dbl);
141     } catch (...) {
142     MessageBox(CString("Could not establish connection to the database server\r\n") +
143 torben 47 "Please contact your network administrator");
144 torben 23 OnOK();
145     }
146 torben 9
147 torben 48 CString title = "H6-Udlånssystem - ";
148     title += config.driver;
149     SetWindowText(title);
150 torben 9
151 torben 1 // TODO: Add extra initialization here
152    
153     return TRUE; // return TRUE unless you set the focus to a control
154     }
155    
156     void Ch6udlnssystemDlg::OnSysCommand(UINT nID, LPARAM lParam)
157     {
158     if ((nID & 0xFFF0) == IDM_ABOUTBOX)
159     {
160     CAboutDlg dlgAbout;
161     dlgAbout.DoModal();
162     }
163     else
164     {
165     CDialog::OnSysCommand(nID, lParam);
166     }
167     }
168    
169     // If you add a minimize button to your dialog, you will need the code below
170     // to draw the icon. For MFC applications using the document/view model,
171     // this is automatically done for you by the framework.
172    
173     void Ch6udlnssystemDlg::OnPaint()
174     {
175     if (IsIconic())
176     {
177     CPaintDC dc(this); // device context for painting
178    
179     SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
180    
181     // Center icon in client rectangle
182     int cxIcon = GetSystemMetrics(SM_CXICON);
183     int cyIcon = GetSystemMetrics(SM_CYICON);
184     CRect rect;
185     GetClientRect(&rect);
186     int x = (rect.Width() - cxIcon + 1) / 2;
187     int y = (rect.Height() - cyIcon + 1) / 2;
188    
189     // Draw the icon
190     dc.DrawIcon(x, y, m_hIcon);
191     }
192     else
193     {
194     CDialog::OnPaint();
195     }
196     }
197    
198     // The system calls this function to obtain the cursor to display while the user drags
199     // the minimized window.
200     HCURSOR Ch6udlnssystemDlg::OnQueryDragIcon()
201     {
202     return static_cast<HCURSOR>(m_hIcon);
203     }
204 torben 3
205     void Ch6udlnssystemDlg::OnHelpAbout()
206     {
207 torben 34 CAboutDlg about;
208     about.DoModal();
209 torben 3 }
210 torben 9
211     void Ch6udlnssystemDlg::OnFileExit()
212     {
213     // TODO: Add your command handler code here
214     OnOK();
215     }

  ViewVC Help
Powered by ViewVC 1.1.20