Annotation of DewFind/DewFindDlg.cpp, revision 1.1.1.1
1.1 nick 1: // DewFindDlg.cpp : implementation file
2: //
3:
4: #include "stdafx.h"
5: #include "DewFind.h"
6: #include "DewFindDlg.h"
7: #include "word.h"
8:
9: #ifdef _DEBUG
10: #define new DEBUG_NEW
11: #endif
12:
13:
14: // CAboutDlg dialog used for App About
15:
16: class CAboutDlg : public CDialog
17: {
18: public:
19: CAboutDlg();
20:
21: // Dialog Data
22: enum { IDD = IDD_ABOUTBOX };
23:
24: protected:
25: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
26:
27: // Implementation
28: protected:
29: DECLARE_MESSAGE_MAP()
30: };
31:
32: CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
33: {
34: }
35:
36: void CAboutDlg::DoDataExchange(CDataExchange* pDX)
37: {
38: CDialog::DoDataExchange(pDX);
39: }
40:
41: BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
42: END_MESSAGE_MAP()
43:
44:
45: // CDewFindDlg dialog
46:
47:
48:
49: CDewFindDlg::CDewFindDlg(CWnd* pParent /*=NULL*/)
50: : CDialog(CDewFindDlg::IDD, pParent)
51: {
52: m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
53: }
54:
55: void CDewFindDlg::DoDataExchange(CDataExchange* pDX)
56: {
57: CDialog::DoDataExchange(pDX);
58: }
59:
60: BEGIN_MESSAGE_MAP(CDewFindDlg, CDialog)
61: ON_WM_SYSCOMMAND()
62: ON_WM_PAINT()
63: ON_WM_QUERYDRAGICON()
64: //}}AFX_MSG_MAP
65: ON_WM_LBUTTONDOWN()
66: ON_WM_RBUTTONDOWN()
67: ON_COMMAND(ID_FILE_NEWGAME, OnFileNewgame)
68: ON_COMMAND(ID_FILE_QUITGAME, OnFileQuitgame)
69: END_MESSAGE_MAP()
70:
71:
72: // CDewFindDlg message handlers
73:
74: BOOL CDewFindDlg::OnInitDialog()
75: {
76: CDialog::OnInitDialog();
77:
78: // Add "About..." menu item to system menu.
79:
80: // IDM_ABOUTBOX must be in the system command range.
81: ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
82: ASSERT(IDM_ABOUTBOX < 0xF000);
83:
84: CMenu* pSysMenu = GetSystemMenu(FALSE);
85: if (pSysMenu != NULL)
86: {
87: CString strAboutMenu;
88: strAboutMenu.LoadString(IDS_ABOUTBOX);
89: if (!strAboutMenu.IsEmpty())
90: {
91: pSysMenu->AppendMenu(MF_SEPARATOR);
92: pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
93: }
94: }
95:
96: // Set the icon for this dialog. The framework does this automatically
97: // when the application's main window is not a dialog
98: SetIcon(m_hIcon, TRUE); // Set big icon
99: SetIcon(m_hIcon, FALSE); // Set small icon
100:
101: srand(time(NULL));
102: gameboard_.ClearBoard();
103: gameboard_.ClearWords();
104: gameboard_.LoadWordsFromFile("words.txt");
105: gameboard_.SetUpBoard();
106:
107: return TRUE; // return TRUE unless you set the focus to a control
108: }
109:
110: void CDewFindDlg::OnSysCommand(UINT nID, LPARAM lParam)
111: {
112: if ((nID & 0xFFF0) == IDM_ABOUTBOX)
113: {
114: CAboutDlg dlgAbout;
115: dlgAbout.DoModal();
116: }
117: else
118: {
119: CDialog::OnSysCommand(nID, lParam);
120: }
121: }
122:
123: // If you add a minimize button to your dialog, you will need the code below
124: // to draw the icon. For MFC applications using the document/view model,
125: // this is automatically done for you by the framework.
126: void CDewFindDlg::DrawScreen()
127: {
128: Word wd;
129: CDC *xDC = GetDC();
130: gameboard_.DrawBoard(xDC);
131: gameboard_.DrawWords(xDC);
132: wd.SetColor(2);
133: wd.Write(gameboard_.GetWordsFound(),130,10,0,xDC);
134: wd.Write("/",169,10,xDC);
135: wd.Write(gameboard_.GetWordCount(),190,10,0,xDC);
136:
137: if (gameboard_.IsGameOver() == true)
138: {
139: wd.Write("Game Over!",360,10,xDC);
140: }
141: ReleaseDC(xDC);
142: }
143:
144:
145: void CDewFindDlg::OnPaint()
146: {
147: DrawScreen();
148:
149: if (IsIconic())
150: {
151: CPaintDC dc(this); // device context for painting
152:
153: SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
154:
155: // Center icon in client rectangle
156: int cxIcon = GetSystemMetrics(SM_CXICON);
157: int cyIcon = GetSystemMetrics(SM_CYICON);
158: CRect rect;
159: GetClientRect(&rect);
160: int x = (rect.Width() - cxIcon + 1) / 2;
161: int y = (rect.Height() - cyIcon + 1) / 2;
162:
163: // Draw the icon
164: dc.DrawIcon(x, y, m_hIcon);
165: }
166: else
167: {
168: CDialog::OnPaint();
169: }
170: }
171:
172: // The system calls this function to obtain the cursor to display while the user drags
173: // the minimized window.
174: HCURSOR CDewFindDlg::OnQueryDragIcon()
175: {
176: return static_cast<HCURSOR>(m_hIcon);
177: }
178:
179: void CDewFindDlg::OnLButtonDown(UINT nFlags, CPoint point)
180: {
181: if (gameboard_.IsGameOver() == false)
182: {
183: if (gameboard_.SelectSquareMouse(point.x,point.y) == true)
184: {
185: //Redraws the screen
186: DrawScreen();
187: }
188: }
189:
190: CDialog::OnLButtonDown(nFlags, point);
191: }
192:
193: void CDewFindDlg::OnRButtonDown(UINT nFlags, CPoint point)
194: {
195: //will clear selection coming soon!!!!
196: gameboard_.ClearSelected();
197: DrawScreen();
198: CDialog::OnRButtonDown(nFlags, point);
199: }
200:
201:
202:
203: void CDewFindDlg::OnFileNewgame()
204: {
205: gameboard_.ClearBoard();
206: gameboard_.SetUpBoard();
207: Invalidate(true);
208: UpdateWindow();
209: DrawScreen();
210: }
211:
212: void CDewFindDlg::OnFileQuitgame()
213: {
214: CDialog::OnCancel();
215: }
216:
217: BOOL CDewFindDlg::PreTranslateMessage(MSG* pMsg)
218: {
219: // TODO: Add your specialized code here and/or call the base class
220: if (pMsg->message==WM_KEYDOWN)
221: {
222: switch(pMsg->wParam)
223: {
224: case VK_F8:
225: OnFileNewgame();
226: return true;
227: }
228: }
229:
230: return CDialog::PreTranslateMessage(pMsg);
231: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>