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

VC语言6.0程序设计从入门到精通-第19章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






}    



int CMyWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)  



{    



          CFrameWnd::OnCreate(lpCreateStruct);  



       SetWindowText(〃ToolBar〃);  



       MyToolBar。CreateEx(this; TBSTYLE_FLAT;      



                    WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER);    



          MyToolBar。LoadToolBar(IDR_MYTOOL1);    



          MyToolBar。EnableDocking(CBRS_ALIGN_ANY);    



  



          EnableDocking(CBRS_ALIGN_ANY);    



          DockControlBar(&MyToolBar);    



          return 0;    



}    



CMyWnd::~CMyWnd()    



{    



}    



void CMyWnd::OnButton10()    



{    



       AfxMessageBox(〃Click button 10〃);  



}    



void CMyWnd::OnButton11()    



{    



       AfxMessageBox(〃Click button 11〃);  



}    



void CMyWnd::OnButton12()    



{  



       AfxMessageBox(〃Click button 12〃);  



}    



void CMyWnd::OnButton13()    



{    



       AfxMessageBox(〃Click button 13〃);  



}  



程序运行结果如图 2…26 所示。  



                                                                                                                                 ·35 ·  


…………………………………………………………Page 45……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



                                                                    



                             图 2…26    MyToolbar 示例程序运行结果  



2。5。4    状态栏  



     利用 AppWizard  自动创建的工程文件中,一般都自动添加了状态栏,在编程过程中,只 

要在原有状态栏的基础上进行修改就可以了。  

     状态栏实际上是个窗口,一般分为几个窗格,每个窗格显示不同的信息。AppWizard  会 

为应用程序自动创建一个默认的状态栏,该状态栏包括几个窗格,分别用来显示状态栏提示、 

大小写锁定键(CAPS LOCK )、数字锁定键(NUM LOCK )和滚动锁定键(SCROLL LOCK) 

的状态。在 MFC  中,状态栏的功能由 CStatusBar 类实现,创建一个状态栏需要以下几个步 

骤:  

     o  构建一个 CStatusBar 对象;  

     o  调用 CStatusBar::Create 创建状态栏窗口;  

     o  调用 CStatusBar::SetIndicators  函数分配窗格,并将状态栏的每一个窗格与一个字符串 

       ID 相联系。  



     if (!m_wndStatusBar。Create(this) ||  



     !m_wndStatusBar。SetIndicators(indicators; sizeof(indicators)/sizeof(UINT)))  



     {  



            TRACE0(〃Failed to create status barn〃);  



            return …1; // fail to create  



     }  



     实例 2…7 :电子时钟。源代码在光盘中“02实例 2…7EClock ”目录下。  



     下面将通过一个电子时钟(在状态栏中嵌入一个电子时钟 )的例程来向读者详细讲述工 

具栏的使用。  

     首先在 indicators 数组的 ID_SEPARATOR 项之后插入一个名为 ID_INDICATOR_CLOCK 

的 ID,然后找到并双击字符串资源,打开字符串资源编辑窗口,接着在编辑窗口内按 Insert 

键以插入一个新的字符串,指定字符串的 ID 为 ID_INDICATOR_CLOCK,内容为 00:00:00 。 

由于状态栏将根据字符串的长度来确定相应窗格的默认宽度,所以指定为 00:00:00 就为时间 

的显示预留了空间。添加该字符串资源的结果如图 2…27 所示。  



 ·36 ·  


…………………………………………………………Page 46……………………………………………………………

                                                                                       第 2 章    应用程序基本框架  



      时间窗格显示的时间必须每隔一秒钟更新一次。更新时间窗格的正文可调用 CStatusBar::  

SetPaneText 函数,要定时更新,则应利用定时器消息(WM_TIMER )。在 Windows 中用户可 

以安装一个或多个计时器,计时器每隔一定的时间间隔就会自动发出一个 WM_TIMER 消息, 

而这个时间间隔可由用户指定。MFC                                  的  Window       类提供了          WM_TIMER         消息处理函数 

OnTimer,可以在该函数内进行更新时间窗格的工作。  



                                                                                          



                           图 2…27    添加 ID_INDICATOR_CLOCK 字符串资源的结果  



      可以利用 ClassWizard 工具给 CMainFrame 类加入 WM_TIMER 的消息处理函数 OnTimer 

和 WM_CLOSE 消息的处理函数 OnClose 。具体方法是在 Class name 栏中选择 CMainFrame, 

在 Object IDs 栏中选择 CMainFrame,在 Messages 栏中找到 WM_TIMER 和 WM_CLOSE 项, 

分别双击之然后单击“OK ”按钮退出 ClassWizard 。CMainFrame::OnClose 函数是在关闭主框 

架窗口是被调用的,程序可以在该函数中做一些清除工作。部分核心代码如下:  



      int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)  



      {  



            if (CFrameWnd::OnCreate(lpCreateStruct) == …1)  



                  return …1;  



            if (!m_wndToolBar。CreateEx(this; TBSTYLE_FLAT; WS_CHILD | WS_VISIBLE | CBRS_TOP  



                  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  



                  !m_wndToolBar。LoadToolBar(IDR_MAINFRAME))  



            {  



                  TRACE0(〃Failed to create toolbarn〃);  



                  return …1;            // fail to create  



            }  



            if (!m_wndStatusBar。Create(this) ||  



                  !m_wndStatusBar。SetIndicators(indicators;  



                      sizeof(indicators)/sizeof(UINT)))  



            {  



                  TRACE0(〃Failed to create status barn〃);  



                  return …1;            // fail to create  



            }  



                                                                                                              ·37 ·  


…………………………………………………………Page 47……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



           m_wndToolBar。EnableDocking(CBRS_ALIGN_ANY);  



           EnableDocking(CBRS_ALIGN_ANY);  



           DockControlBar(&m_wndToolBar);  



           SetTimer(1;1000;NULL); //设置时钟定时器  



           return 0;  



      }  



      void CMainFrame::OnTimer(UINT nIDEvent)    



      {  



           // TODO: Add your message handler code here and/or call default  



           CTime time;  



           time=CTime::GetCurrentTime(); //得到当前时间  



           CString s=time。Format(〃%H:%M:%S〃);//格式化时间显示格
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!