国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
CSettingsDialog, a Dialog Customizing Your Project Settings and More



Introduction

This article extends Chris Losinger's work on CSAPrefsDlg.

CSettingsDialog is an MFC class which enables to customize the project settings. The settings of a project are categorized as pages based on their nature of those pages. If you are familiar with the Netscape preferences-dialog, you will have no problem understanding the interfaces of CSettingsDialog

Unlike those similar dialogs posted in CodeProject and CodeGuru, which only allow one type of Window (e.g.,CPropertyPage or CDialog), CSettingsDialog allows any CWnd derived windows to be used as setting pages (Look at the demo figures above, a property page, a form view and a generic CWnd Windows are used for different settings.I believe that this design extend the applicability of the class to meet the need of various situations. Furthermore, each tree node does not have to have a setting page to be associated, it can be a generic tree node, e.g., a label used as a category index.

New features are added to this newest version. CHtmlView is supported (take a look at the first demo picture). However, in order to use the CHtmlView (or derived) class, you need to override the OnMouseActive virtual function to avoid the ASSERTion error in your CHtmlView (or derived) class. Another new feature of CSettingsDialog is that it support both modal and modaless state of display. There are some rules need to be followed. For the modeless dialog, the dialog variable must be declared as a pointer and be instantiated using new operator. You need to create the dialog using member function CSettingsDialog::Create() and using ShowWindow(SW_SHOW) to diaplay the dialog. The Apply button in the dialog is disabled in the modal state and is enabled in the modeless state.

How to use CSettingsDialog

Use of the class is pretty simple. Just follow the following steps:
  • Add the following files to your project :
    • SettingsDialog.cpp, SettingsDialog.h
    • CSAPrefsStatic.cpp,.h


  • Copy the IDD_SETTINGS_DLG dialog resource from the sample project to your project.

  • Create your Settings "pages" in the resource editor. If the page is a dialog, make sure that the dialog has the following settings:
    • Style - Child
    • Border - None
    • No OK or Cancel buttons!
    Use Class Wizard to create the dialog classes for the pages.

  • If used as a modal dialog: Create and initialize the CSettingsDialog as demonstrated in the demo project: CSettingsDialog dlg;
    Collapse
    Copy Code
    CSettingsDialog dlg;    dlg.AddPage(RUNTIME_CLASS(CMyHtmlView), _T("Project Setting"), 0);    CPropPage1 *pModelPage = (CPropPage1*) dlg.AddPage(RUNTIME_CLASS(CPropPage1),    _T("Model"), IDD_PROPERTY_PAGE1,    _T("Project Setting"));    dlg.AddPage(RUNTIME_CLASS(CPropPage2), _T("Visibility"),    IDD_PROPERTY_PAGE2, pModelPage);    dlg.AddPage(RUNTIME_CLASS(CMyFormView),    _T("Form View"), IDD_FORMVIEW, pModelPage);    dlg.AddPage(RUNTIME_CLASS(CMyView), _T("Generic View Page"), 0);    dlg.AddPage(NULL, _T("Generic Tree Item"), 0);    dlg.SetTitle("Project Settings");    dlg.SetLogoText("CSettingsDialog 1.0");    int nResponse = dlg.DoModal();    if (nResponse == IDOK)    {    // TODO: Place code here to handle when the dialog is        //  dismissed with OK    }    else if (nResponse == IDCANCEL)    {    // TODO: Place code here to handle when the dialog is        //  dismissed with Cancel    }    
  • If used as a modaless dialog:
    • Declare a CSettingsDialog variable as a pointer in your parent window class, eg.,m_pDlg in CMainFrame.
    • Instantiate an object of CSettingsDialog:
      Collapse
      Copy Code
              CSettingsDialog *m_pDlg = new CSettingsDialog(this) ;        
    • create, initialize, and display the settings pages and dialog, e.g.,
      Collapse
      Copy Code
      if (!m_pDlg)        {        m_pDlg = new CSettingsDialog(this);        m_pDlg->AddPage(RUNTIME_CLASS(CMyHtmlView),        _T("Project Setting"), 0);        CPropPage1 *pModelPage        = (CPropPage1*) m_pDlg->AddPage(RUNTIME_CLASS(CPropPage1),        _T("Model (PropertyPage)"), IDD_PROPERTY_PAGE1,        _T("Project Setting"));        m_pDlg->AddPage(RUNTIME_CLASS(CPropPage2),        _T("Visibility (PropertyPage)"), IDD_PROPERTY_PAGE2,        pModelPage);        m_pDlg->AddPage(RUNTIME_CLASS(CMyFormView), _T("Form View"),        IDD_FORMVIEW, pModelPage);        m_pDlg->AddPage(RUNTIME_CLASS(CMyView), _T("Generic View Page"), 0);        m_pDlg->AddPage(NULL, _T("Generic Tree Item"), 0);        m_pDlg->SetTitle("Project Settings");        m_pDlg->SetLogoText("CSettingsDialog 1.0");        m_pDlg->Create();        }        m_pDlg->ShowWindow(SW_SHOW);        
    • Add a message handler of CSettingsDialog in your parent window which "owns" the dialog.
    • Finally do not forget to free the dialog memory in the parent window's destructor.
    • If you are not sure exactly how to do it, take a look at the attached demo project,

Acknowledgments

History

  • V1.0 02/12/02 First version of the class
  • V1.1 03/01/02
    • Memory leak bug fixed.
    • Thick frame style of CView type class (including CFormView) is removed to make it look more industrial standard.
    • Html view supported.
  • V1.2 03/08/02 Both modal and modaless states supported. The demo project shows the CSettingsDialog in both modal and modaless way.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于如何在線程中隨意修改一個(gè)當(dāng)前窗口的文本
VC中模態(tài)與非模態(tài)對話框的顯示與關(guān)閉
隱藏窗口
學(xué)習(xí)Jquery EasyUI的添加,修改,刪除,查詢等基本操作
pywinauto教程
Qt namespace Ui
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服