Go4Expert

Go4Expert (http://www.go4expert.com/)
-   MFC (http://www.go4expert.com/forums/mfc/)
-   -   Open Dialog when using BOOL OnInitDialog() function ? (http://www.go4expert.com/forums/dialog-using-bool-oninitdialog-function-t1875/)

zippor 13Nov2006 22:48

Open Dialog when using BOOL OnInitDialog() function ?
 
BOOL OnInitDialog()
{
CListBox wndListBox;
wndListBox.Attach (GetDlgItem (IDC_LIST1)->m_hWnd);
wndListBox.AddString (_T ("One"));
wndListBox.AddString (_T ("Two"));
wndListBox.AddString (_T ("Three"));
wndListBox.Detach ();
return true;
}

When I use this code above in BOOL OnInitDialog() function of CDialog class, this code below can't execute. (IDC_LIST1 is a member of IDD_DLTEST1). Can you explain for me ? If I want to open IDD_DLTEST1 dialog, What do I have to do?

void CallDialog()
{
Dlg d1(IDD_DLTEST1);
d1.DoModal();
}

shabbir 14Nov2006 10:49

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
I could not get what you are asking.

zippor 14Nov2006 23:22

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
When i used this code in CDialog class:
Code:

BOOL OnInitDialog()
{
CListBox wndListBox;
wndListBox.Attach (GetDlgItem (IDC_LIST1)->m_hWnd);
wndListBox.AddString (_T ("One"));
wndListBox.AddString (_T ("Two"));
wndListBox.AddString (_T ("Three"));
wndListBox.Detach ();
return true;
}

Why didn't the code below do? (class Dlg::public CDialog)
Code:

void CallDialog()
{
Dlg d1(IDD_DLTEST1);
d1.DoModal();
}


shabbir 15Nov2006 11:14

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
Because you are not calling that function.

zippor 15Nov2006 19:54

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
This is my code. Help me
Code:

#include<afxwin.h>
#include<afxext.h>
#include"resource.h"
//////////////////////////////////////////////////////////////////////////////////////////////
class  CD : public CDocument
{
        DECLARE_DYNCREATE( CD )

public:
        CD():CDocument()
        {
        }
};
IMPLEMENT_DYNCREATE( CD, CDocument )
//////////////////////////////////////////////////////////////////////////////////////////////
class  CV : public CView
{
       
        DECLARE_DYNCREATE( CV )

public:
       
        void OnDraw(CDC* pDC)
        {
        }
};
IMPLEMENT_DYNCREATE( CV, CView )
class Dlg : public CDialog
{
public:
        Dlg(UINT  id):CDialog(id){}
        BOOL OnInitDialog()
        {
                CListBox wndListBox;
                wndListBox.Attach (GetDlgItem (IDC_LIST1)->m_hWnd);
                wndListBox.AddString (_T ("One"));
                wndListBox.AddString (_T ("Two"));
                wndListBox.AddString (_T ("Three"));
                wndListBox.Detach ();
                return true;
               
        }
                void CallDialog()
              {
                              Dlg d1(IDD_DLTEST1);
                              d1.DoModal();
              }
        DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(Dlg,CDialog)
        ON_COMMAND(IDOK, CallDialog)
END_MESSAGE_MAP()
class  CS : public CFrameWnd
{
        DECLARE_DYNCREATE( CS )
        CToolBar  tb;
        CStatusBar  sb;
public:
void OnCreate(LPCREATESTRUCT  cs)
        {
                CFrameWnd::OnCreate(cs);
                sb.Create(this);
                tb.Create(this);
                tb.LoadToolBar(IDR_MNTB);
                tb.EnableDocking( CBRS_ALIGN_ANY );
                EnableDocking( CBRS_ALIGN_ANY );
                DockControlBar( &tb );
        }
              BOOL CS::PreCreateWindow(CREATESTRUCT& cs)
              {
              }
        DECLARE_MESSAGE_MAP()
};
IMPLEMENT_DYNCREATE( CS, CFrameWnd )
BEGIN_MESSAGE_MAP( CS, CFrameWnd )
       
        ON_WM_CREATE()

END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////////////////
class  CT : public CWinApp
{
public:
        BOOL  InitInstance()
        {
                CSingleDocTemplate  *pd = new CSingleDocTemplate(
                        IDR_MNTB,
                        RUNTIME_CLASS( CD ),
                        RUNTIME_CLASS( CS ),
                        RUNTIME_CLASS( CV ));
                AddDocTemplate(pd);
               
                CCommandLineInfo  cf;
                ParseCommandLine(cf);
                if (!ProcessShellCommand(cf)) return false;
                return true;
        }
       
        DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CT,CWinApp)
        ON_COMMAND( ID_EXIT, CWinApp::CloseAllDocuments)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////////////////
CT a;


shabbir 16Nov2006 08:22

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
We normally dont do this
ON_COMMAND(IDOK, CallDialog)
but we override the OnOK but that should not be the cause of the problem. You are treating IDOK as a normal button and call dialog should be called.

Is it that CallDialog is not getting called then follow this steps

Make a dialog based MFC exe application

Copy the following line in the message map
ON_COMMAND(IDOK, CallDialog)

Now add the CallDialog function in .h as follows
afx_msg void CallDialog();

I think this should do the job

Thanks
Shabbir

zippor 17Nov2006 15:38

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
I don't know much about .h, In the situation, Could you show content of .h file? thanks

shabbir 17Nov2006 18:20

Re: Open Dialog when using BOOL OnInitDialog() function ?
 
Opening the file on your system will show you the content.


All times are GMT +5.5. The time now is 14:13.