對話框使用技巧集合
2006/12/15 23:34:18
Dialog & Windows 使用技巧


注:以下代碼以一個名為CTest6Dlg的對話框類為例
    1. 在任務欄隱藏對話框      ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);

  2. 使對話框為頂層窗口        SetWindowPos(&this->wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);

  3. 在運行時添加最大化,最小化按鈕    SetWindowLong(this->m_hWnd, GWL_STYLE,
                  GetWindowLong(this->m_hWnd, GWL_STYLE) |
                  WS_MINIMIZEBOX | WS_MAXIMIZEBOX);
    UpdateWindow();


  4. 使能對話框右上角關閉按鈕
    在OnInitDialog中

    方法一:
      CMenu* menu = GetSystemMenu(FALSE);
      menu->ModifyMenu(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED );

    方法二:
      CMenu* menu = GetSystemMenu(FALSE);
      menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);

  5. 當對話框一部分在屏幕外時,顯示全部對話框    SendMessage(DM_REPOSITION);

  6. 改變鼠標外形
    添加 WM_SETCURSOR 消息映射函數

    BOOL CTest6Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
    {
        SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HELP));

        return 0; 
    }

  7. 改變對話框背景色和文本顏色
    在CTest6App的InitInstance中添加

    SetDialogBkColor(RGB(255,0,0), RGB(0,255,0));

  8. 改變對話框caption上的圖標
    導入自己的圖標資源到工程中,把原來ID為 IDR_MAINFRAME 的資源刪除,把新的圖標的ID命名為IDR_MAINFRAME

  9. 在主對話框顯示前,顯示一個login對話框
    BOOL CTest6App::InitInstance()
    {
          //...
          int nResponse;
          CLoginDlg loginDlg;

          nResponse = loginDlg.DoModal();
          if (nResponse == IDOK)
          {
          }
          if (nResponse == IDCANCEL)
          {
              return FALSE;
          }
 
          CTest6Dlg dlg;
          m_pMainWnd = &dlg;
          int nResponse = dlg.DoModal();
          if (nResponse == IDOK )
          {
          }
          else if (nResponse == IDCANCEL)
          {
          }
          return FALSE;
    }

然后重載CLoginDlg對話框的哦OnOK(),在其中判斷條件
void CLoginDlg::OnOK()
{
    if (條件滿足)
        CDialog::OnOK();
    else
        AfxMessageBox(_T("invalid password!"));
}


  10. 在對話框中添加工具欄
    方法一:添加以下代碼到 OnInitDialog 中

    if ( !m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1) )
    {
          TRACE0("Failed to Create Dialog Toolbar\n");
          EndDialog(IDCANCEL);
    }

    CRect rcClientOld; // 久客戶區RECT
    CRect rcClientNew; // 加入TOOLBAR后的CLIENT RECT
    GetClientRect(rcClientOld); //
    // Called to reposition and resize control bars in the client area of a window
    // The reposQuery FLAG does not really traw the Toolbar.  It only does the calculations.
    // And puts the new ClientRect values in rcClientNew so we can do the rest of the Math.
    //重新計算RECT大小
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST,
                      AFX_IDW_CONTROLBAR_LAST,
                      0,
                      reposQuery,
                      rcClientNew

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 午夜剧场1000| 国产麻传媒精品国产AV| 久久婷婷人人澡人人喊人人爽| 波多野结衣在线观看一区二区三区| 四虎国产精品永久地址99| 国产又污又爽又色的网站| 国产精品视频李雅| japonensisjava野外vt| 成年女人毛片免费观看97| 久久夜色精品国产噜噜| 欧美亚洲综合另类在线观看| 亚洲综合色一区二区三区小说 | 国产乱了真实在线观看| 四虎永久在线日韩精品观看| 国产香蕉一区二区三区在线视频| zoom和okzoom在线视频| 成年女人视频网站免费m| 久久国产乱子免费精品| 最近免费中文字幕完整7| 亚洲国产欧美精品一区二区三区| 波多野结衣黑丝| 免费在线观看a级毛片| 羞羞漫画成人在线| 国产亚洲高清不卡在线观看 | 日产中文字乱码卡一卡二视频| 乱亲玉米地初尝云雨| 欧美国产在线视频| 亚洲欧美一区二区三区电影| 熟妇人妻不卡中文字幕| 免费一级大黄特色大片| 精品女同一区二区| 四虎永久免费地址ww484e5566| 野花视频在线官网免费1| 国产大学生一级毛片绿象| 久久五月天综合| 国产男人女人做性全过程视频| 尹人久久久香蕉精品| 国产精品白浆在线观看无码专区 | 偷拍区小说区图片区另类呻吟| 精品国产人成亚洲区| 哆啦a梦エロ本|