I have CPrinterDlg
class which contains
// CPrinterDlg.h
public:
CEdit m_editRxFreq;
void print_SignalData(unsigned int freq, float wvlen);
// CPrinterDlg.cpp
void CPrinterDlg::print_SignalData(unsigned int freq, float wvlen)
{
m_editRxFreq.SetWindowTextW(L"ddd");
}
In order to access that function I did in MainFrm
like this:
public:
CPrinterDlg m_PrinterDlg;
CPrinterDlg& getPrinterDlg() { return m_PrinterDlg; }
And from where I am calling print_SignalData(...) is
CSMsg``` class
void CSockMsg::Send_SignalData(unsigned char* msg)
{
//..
CMainFrame* pMain = (CMainFrame*)AfxGetApp()->GetMainWnd();
pMain->getPrinterDlg().print_SignalData(freq, wvlen);
}
When I call print_SignalData(...)
from one of the CPrinter function directly, it's working well. But, When I try to call it from CSMsg::Send_SignalData(unsigned char* msg)
it's giving me Debug Assertion(...MFC\winocc.cpp Line: 242
) from this point:m_editRxFreq.SetWindowTextW(L"ddd");
.
And I see that m_editRxFreq is NULL
.
So, how do you think why m_editRxFreq
is getting be NULL? and how can I solve this problem??
Solved!
I was doing
public:
CPrinterDlg m_PrinterDlg;
CPrinterDlg& getPrinterDlg() { return m_PrinterDlg; }
in CMainFrm.h
,
and actually Creating and Showing that dlg
CPrinterDlg dlg;
dlg.Create(...);
dlg.ShowWindow(...);
was in CxxView::OnInitialUpdate()
.
That's why when I called pMain->getPrinterDlg().print_SignalData(freq, wvlen);
it was giving me NULL;
So in order to solve it,
I created CPrinterDlg dlg.Create(...)
in CMainFrm
class but not in CxxxView
class.