Click here to Skip to main content
12,452,015 members (24,608 online)
Click here to Skip to main content
Add your own
alternative version

Stats

114.7K views
1.8K downloads
31 bookmarked
Posted

Create a modeless dialog box as sibling of the app's main window

, 9 Nov 2000
Rate this:
Please Sign up or sign in to vote.
Simple step by step article explaining how to create a modeless dialog box as sibling of the app's main window.

This article is part of the drag and drop interface samples.

  1. Serializing ASCII Data
  2. Modeless child dialog
  3. Modeless sibling dialog
  4. The drag source
  5. The MFC drop target
  6. The TBTextTarget class

  • Download source files - 20 Kb

    It's nearly as short as the child version of modeless dialogs

    Follow these steps:

    1. Create a new dialog resource and use the Class Wizard for making a new CDialog based class COtherDropDialog
    2. In the class maintaining the modeless dialog (here it's CInterfaceView) add a member variable of type pointer to CWinThread and make sure you have a destructor:
      <font color="#000080">class</font> CInterfaceView : public CView
      {
      ...
          CWinThread *m_pDlgThread
          ~CInterfaceView();
      ...
      }
    3. Use ClassWizard to create a new CWinThread-based class COtherDropDialogThread
    4. Override COtherRopDialogThread::InitInstance():
      If you forget to change the m_pMainWnd variable, the dialog will stay modal!
      BOOL COtherDropDialogThread::InitInstance()
      {
          COtherDropDialog dlg;
      
          m_pMainWnd = &dlg;
          dlg.DoModal();  <font color="#008000">// returning false will make MFC doing the cleanup for us :)</font>
                
          return FALSE;
      }
    5. In your appropriate message handler, do the following:
      <FONT COLOR=#008080>void</FONT>
    6. If you like your top-level window to have an icon displayed in the taskbar, add the following to COtherDropDialog:: OnInitDialog (ommited in the sample):
      BOOL COtherDropDialog::OnInitDialog() 
      {
          CDialog::OnInitDialog();
          m_hIcon = AfxGetApp()->LoadIcon(IDI_MYICON);
          SetIcon(m_hIcon, TRUE);
          SetIcon(m_hIcon, FALSE);
      <font color="#008000">    // and all the other stuff
          //...
      </font>
    7. Don't forget to do the clean-up in the destructor:
      CInterfaceView::~CInterfaceView()
      {
          <font color="#000080">if</font>
  • 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

    Share

    About the Author

    Thomas Blenkers
    Web Developer
    Germany Germany
    PhD Chemist,
    programming with MSVC & MFC since 1996

    You may also be interested in...

    Pro
    Pro

    Comments and Discussions

     
    QuestionHow you can add a modeless dialog to a win32 project Pin
    Member 100432902-Jul-14 23:10
    memberMember 100432902-Jul-14 23:10 
    GeneralSystem crashes Pin
    ken12325-Apr-05 9:00
    memberken12325-Apr-05 9:00 
    Generalprobelm with CPU usage Pin
    Anonymous14-Apr-03 20:50
    sussAnonymous14-Apr-03 20:50 
    I'm using child threads for creating modeless dialog boxes. but its taking 100% CPU resources.can neone please solve my problem?

    bye
    ajay

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Terms of Use | Mobile
    Web01 | 2.8.160826.1 | Last Updated 10 Nov 2000
    Article Copyright 2000 by Thomas Blenkers
    Everything else Copyright © CodeProject, 1999-2016
    Layout: fixed | fluid