按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
#0120 // read from the tips file
#0121 BOOL bStop = FALSE;
#0122 while (!bStop)
#0123 {
#0124 if (_fgetts(lpsz; MAX_BUFLEN; m_pStream) == NULL)
#0125 {
#0126 // We have either reached EOF or enocuntered some problem
#0127 // In both cases reset the pointer to the beginning of the file
#0128 // This behavior is same as VC++ Tips file
#0129 if (fseek(m_pStream; 0; SEEK_SET) != 0)
#0130 AfxMessageBox(CG_IDP_FILE_CORRUPT);
#0131 }
#0132 else
#0133 {
#0134 if (*lpsz != ' ' && *lpsz != 't' &&
#0135 *lpsz != 'n' && *lpsz != ';')
#0136 {
#0137 // There should be no space at the beginning of the tip
#0138 // This behavior is same as VC++ Tips file
#0139 // ment lines are ignored and they start with a semicolon
816
…………………………………………………………Page 879……………………………………………………………
16 ponents & ActiveX Controls
第 章 站眾的肩膀 使用
#0140 bStop = TRUE;
#0141 }
#0142 }
#0143 }
#0144 strNext。ReleaseBuffer();
#0145 }
#0146
#0147 HBRUSH CTipDlg::OnCtlColor(CDC* pDC; CWnd* pWnd; UINT nCtlColor)
#0148 {
#0149 if (pWnd…》GetDlgCtrlID() == IDC_TIPSTRING)
#0150 return (HBRUSH)GetStockObject(WHITE_BRUSH);
#0151
#0152 return CDialog::OnCtlColor(pDC; pWnd; nCtlColor);
#0153 }
#0154
#0155 void CTipDlg::OnOK()
#0156 {
#0157 CDialog::OnOK();
#0158
#0159 // Update the startup information stored in the INI file
#0160 CWinApp* pApp = AfxGetApp();
#0161 pApp…》WriteProfileInt(szSection; szIntStartup; !m_bStartup);
#0162 }
#0163
#0164 BOOL CTipDlg::OnInitDialog()
#0165 {
#0166 CDialog::OnInitDialog();
#0167
#0168 // If Tips file does not exist then disable NextTip
#0169 if (m_pStream == NULL)
#0170 GetDlgItem(IDC_NEXTTIP)…》EnableWindow(FALSE);
#0171
#0172 return TRUE; // return TRUE unless you set the focus to a control
#0173 }
#0174
#0175 void CTipDlg::OnPaint()
#0176 {
#0177 CPaintDC dc(this); // device context for painting
#0178
#0179 // Get paint area for the big static control
#0180 CWnd* pStatic = GetDlgItem(IDC_BULB);
#0181 CRect rect;
#0182 pStatic…》GetWindowRect(&rect);
#0183 ScreenToClient(&rect);
#0184
#0185 // Paint the background white。
817
…………………………………………………………Page 880……………………………………………………………
第篇 深入 MFC 程式設計
#0186 CBrush brush;
#0187 brush。CreateStockObject(WHITE_BRUSH);
#0188 dc。FillRect(rect; &brush);
#0189
#0190 // Load bitmap and get dimensions of the bitmap
#0191 CBitmap bmp;
#0192 bmp。LoadBitmap(IDB_LIGHTBULB);
#0193 BITMAP bmpInfo;
#0194 bmp。GetBitmap(&bmpInfo);
#0195
#0196 // Draw bitmap in top corner and validate only top portion of window
#0197 CDC dcTmp;
#0198 dcTmp。CreatepatibleDC(&dc);
#0199 dcTmp。SelectObject(&bmp);
#0200 rect。bottom = bmpInfo。bmHeight + rect。top;
#0201 dc。BitBlt(rect。left; rect。top; rect。Width(); rect。Height();
#0202 &dcTmp; 0; 0; SRCCOPY);
#0203
#0204 // Draw out 〃Did you know。。。〃 message next to the bitmap
#0205 CString strMessage;
#0206 strMessage。LoadString(CG_IDS_DIDYOUKNOW);
#0207 rect。left += bmpInfo。bmWidth;
#0208 dc。DrawText(strMessage; rect; DT_VCENTER | DT_SINGLELINE);
#0209
#0210 // Do not call CDialog::OnPaint() for painting messages
#0211 }
修改Test 程序内容
以下是对于上述新增文件的分析与修改。稍早我曾分析过,只要修改一下Splash Screen
画面,增加一个TIPS。TXT 文字文件,再变化一下About 对话窗,就成了。
TEST。RC
要把自己准备的图片做为「炫耀画面」,有两个还算方便的作法。其一是直接编修Splash
Screen 组件带给我们的Splsh16。bmp 的内容,其二是修改RC 档中的IDB_SPLASH 所
对应的文件名称。我选择后者。所以我修改RC 档中的一行:
IDB_SPLASH BITMAP DISCARDABLE 〃Dissect。bmp〃
818
…………………………………………………………Page 881……………………………………………………………
16 ponents & ActiveX Controls
第 章 站眾的肩膀 使用
Dissect。bmp 图档内容如下:
侯
俊
傑
著 /
松
崗
圖
書
公
司
出
版
2nd Edition
深入湷鯩FC
此外我也修改RC 文件中的一些字符串,使它们呈现中文:
IDD_TIP DIALOG DISCARDABLE 0; 0; 231; 164
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION 〃今日小秘訣〃
FONT 8; 〃MS Sans Serif〃
BEGIN
CONTROL 〃〃;…1;〃Static〃;SS_BLACKFRAME;12;11;207;123
LTEXT 〃Some String〃;IDC_TIPSTRING;28;63;177;60
CONTROL 〃程式啟動時顯示小秘訣〃;IDC_STARTUP;〃Button〃;
BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP;13;146;85;10
PUSHBUTTON 〃個小秘訣〃;IDC_NEXTTIP;109;143;50;14;WS_GROUP
DEFPUSHBUTTON 〃關椋Аǎ籌DOK;168;143;50;14;WS_GROUP
CONTROL 〃〃;IDC_BULB;〃Static〃;SS_BITMAP;20;17;190;111
END
STRINGTABLE DISCARDABLE
BEGIN
。。。
// CG_IDS_DIDYOUKNOW 〃Did You Know。。。〃
CG_IDS_DIDYOUKNOW 〃侯俊傑著作年表。。。〃
END
819
…………………………………………………………Page 882……………………………………………………………
第篇 深入 MFC 程式設計
增加一个TIPS。TXT
这很简单,使用任何一种文字编辑工具,遵循前面说过的TIPS。TXT 文件格式,做出你
的每日小秘诀。
修改RC 文件中的About 对话窗画面
我增加了四个static 控制组件,其中两个做为卷标使用,不必在乎其ID 。另两个准备给
Test 程序在【About 】对话窗出现时设定系统信息使用, ID 分别设定为
IDC_PHYSICAL_MEM 和IDC_DISK_SPACE ,配合System Info for About Dlg 组件的建
议