WEB开发网
开发学院软件开发VC Visual C++ MFC 简明教程(4) 阅读

Visual C++ MFC 简明教程(4)

 2007-03-18 21:27:52 来源:WEB开发网   
核心提示: 还有一些发送给窗口的事件消息更深奥,例如,Visual C++ MFC 简明教程(4)(7),你可以使用ON_WM_TIMER消息与SetTimer函数来使接收预先设置的时间间隔,下面的代码给出了该过程,在消息映射中,我们已经通知了ON_WM_TIMER消息,当你运行该代码时,程序会每隔1

还有一些发送给窗口的事件消息更深奥。例如,你可以使用ON_WM_TIMER消息与SetTimer函数来使接收预先设置的时间间隔。下面的代码给出了该过程。当你运行该代码时,程序会每隔1秒钟鸣笛一声。你可以用其它更有用的功能来代替鸣笛。

  // button4.cpp
   #include
   #define IDB_BUTTON 100
   #define IDT_TIMER1 200
   // Declare the application class
   class CButtonApp : public CWinApp
   {
   public:
   virtual BOOL InitInstance();
   };
   // Create an instance of the application class
   CButtonApp ButtonApp;
   // Declare the main window class
   class CButtonWindow : public CFrameWnd
   {
   CButton *button;
   public:
   CButtonWindow();
   afx_msg void HandleButton();
   afx_msg void OnSize(UINT, int, int);
   afx_msg void OnTimer(UINT);
   DECLARE_MESSAGE_MAP()
   };
   // A message handler function
   void CButtonWindow::HandleButton()
   {
   MessageBeep(-1);
   }
   // A message handler function
   void CButtonWindow::OnSize(UINT nType, int cx,
   int cy)
   {
   CRect r;
   GetClientRect(&r);
   r.InflateRect(-20,-20);
   button->MoveWindow(r);
   }
   // A message handler function
   void CButtonWindow::OnTimer(UINT id)
   {
   MessageBeep(-1);
   }
   // The message map
   BEGIN_MESSAGE_MAP(CButtonWindow, CFrameWnd)
   ON_BN_CLICKED(IDB_BUTTON, HandleButton)
   ON_WM_SIZE()
   ON_WM_TIMER()
   END_MESSAGE_MAP()
   // The InitInstance function is called once
   // when the application first executes
   BOOL CButtonApp::InitInstance()
   {
   m_pMainWnd = new CButtonWindow();
   m_pMainWnd->ShowWindow(m_nCmdShow);
   m_pMainWnd->UpdateWindow();
   return TRUE;
   }
   // The constructor for the window class
   CButtonWindow::CButtonWindow()
   {
   CRect r;
   // Create the window itself
   Create(NULL,
  "CButton Tests",
   WS_OVERLAPPEDWINDOW,
   CRect(0,0,200,200));
   // Set up the timer
   SetTimer(IDT_TIMER1, 1000, NULL); // 1000 ms.
   // Get the size of the client rectangle
   GetClientRect(&r);
   r.InflateRect(-20,-20);
   // Create a button
   button = new CButton();
   button->Create("Push me",
   WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
   r,
   this,
   IDB_BUTTON);
   }

在上面的程序内部,我们建立了一个按钮,如前所示,改变尺寸的代码没有变动。在窗口的构造函数中,我们添加了SetTimer函数的调用。该函数接收三个参数:时钟的ID(可以同时使用多个时钟,每次时钟关闭时都会把ID传递给所调用的函数),时间以毫秒为单位。在这里,我们向函数传送了NULL,以使窗口消息映射自己自动发送函数。在消息映射中,我们已经通知了ON_WM_TIMER消息,它会自动调用OnTimer函数来传递已经关闭了的时钟的ID。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Visual MFC 简明教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接