友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第201章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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 组件的建 



                  议
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!