乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Z:給對話框添加菜單 工具欄 狀態(tài)欄簡易方法

       mcqlzz 2010-09-19
      給對話框添加菜單 工具欄 狀態(tài)欄簡易方法
      2009-12-07 16:17

      轉(zhuǎn)自:http://suhuaiqiang.blog.163.com/blog/static/123191840200962883012444/

      先建立一個基于Dialog 的程序,我給他起了個名字叫:DlgMenuToolbar。

      一、如何往基于Dialog的程序添加菜單

      [1.1] 先添加菜單(IDR_MENU1)資源,并加上需要的菜單項。
      [1.2] 編輯對話框資源IDD_DLGMENUTOOLBAR_DIALOG的屬性,在屬性對話框中選擇IDR_MENU1即可。

      [1.3] 假如您不希望在對話框?qū)傩灾兄苯釉O(shè)置菜單,而通過代碼在程序中動態(tài)生成可以采用如下方法:

      [1.3.1]在CDlgMenuToolbarDlg類聲名中添加成員變量CMenu m_menu
      再在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代碼: //加載菜單
      m_menu.LoadMenu(IDR_MENU1);
      //設(shè)置當(dāng)前菜單
      SetMenu(&m_menu);
      //當(dāng)你不需要菜單時可以用 SetMenu(NULL);來取消當(dāng)前菜單
      二、如何往基于Dialog的程序添加工具欄

      [2.1] 先添加工具欄(IDR_TOOLBAR1)資源,并畫好各個按鈕。
      [2.2] 在CDlgMenuToolbarDlg類聲名中添加成員變量 CToolBar m_wndtoolbar;
      [2.3] 在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代碼 //添加一個平面工具條
      if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
          CRect(4,4,0,0)) ||!m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )
      {
      TRACE0("failed to create toolbar\n");
      return FALSE;
      }
      m_wndtoolbar.ShowWindow(SW_SHOW);
      RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
      三、為工具欄添加工具提示

      [3.1] 在CDlgMenuToolbarDlg類定義中手工添加消息映射函數(shù)的定義,如下黑體部分   //{{AFX_MSG(CDlgMenuToolbarDlg)
      virtual BOOL OnInitDialog();
      afx_msg void OnPaint();
      afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
      //}}AFX_MSG
      DECLARE_MESSAGE_MAP()

      [3.2] 在CDlgMenuToolbarDlg.cpp添加函數(shù)的實現(xiàn)代碼 //工具欄提示
      BOOL CDlgMenuToolbarDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
      {
      ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);

      // UNICODE消息
      TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
      TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
      //TCHAR szFullText[512];
      CString strTipText;
      UINT nID = pNMHDR->idFrom;

      if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
      pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
      {
      // idFrom為工具條的HWND
      nID = ::GetDlgCtrlID((HWND)nID);
      }

      if (nID != 0) //不為分隔符
      {
      strTipText.LoadString(nID);
      strTipText = strTipText.Mid(strTipText.Find(''\n'',0)+1);

      #ifndef _UNICODE
      if (pNMHDR->code == TTN_NEEDTEXTA)
      {
      lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
      }
      else
      {
      _mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
      }
      #else
      if (pNMHDR->code == TTN_NEEDTEXTA)
      {
      _wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
      }
      else
      {
      lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
      }
      #endif

      *pResult = 0;

      // 使工具條提示窗口在最上面
      ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
      SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
      return TRUE;
      }
      return TRUE;
      }

      [3.3] 在CDlgMenuToolbarDlg.cpp中添加消息映射,請看如下代碼中的黑體部分 BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog)
      //{{AFX_MSG_MAP(CDlgMenuToolbarDlg)
      ON_WM_PAINT()
      ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )
      //}}AFX_MSG_MAP
      END_MESSAGE_MAP()

      四、其它
      為了使你的程序看起來更酷,還可以在CDlgMenuToolbarDlg::OnPaint()中修改代碼實現(xiàn)Dialog 填充顏色。
      CPaintDC dc(this);
      CRect rect;
      GetClientRect(rect);
      dc.FillSolidRect(rect, RGB(60,110,170));

       

      五、添加狀態(tài)欄

       

      static UINT indicators[] =  
      {  
      // ID_SEPARATOR,                       //   status   line   indicator
      ID_TEST_ITEM,    //自己在STRING TABLE中所定義的ID
      ID_USB_STATE,
      IDS_POWER_STATE,
      ID_DATE,
      ID_TIME,
      // ID_INDICATOR_CAPS,  
      // ID_INDICATOR_NUM,  
      // ID_INDICATOR_SCRL,  
      };
      void CThreadDemoDlg::OnInitDialog()

      {

      if (!m_wndStatusBar.Create(this) ||
      !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))  
      {  
      TRACE0("Failed to create statusbar\n");  
      return   -1;             //   fail   to   create  
      }  
      RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

       

      }

       

      void CThreadDemoDlg::OnButton1()
      {
      CStatusBar* pStatus=&this->m_wndStatusBar;   //對狀態(tài)欄字符進行修改
      if(pStatus)
      {
      pStatus->SetPaneText(0,"測試0");
      pStatus->SetPaneText(1,"測試1");
      pStatus->SetPaneText(2,"測試2");
      pStatus->SetPaneText(3,"測試3");
      pStatus->SetPaneText(4,"測試4");
      }
      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多