提问人:Zrn-dev 提问时间:7/25/2022 最后编辑:Zrn-dev 更新时间:8/10/2022 访问量:149
控制越来越 NULL mf
Control is getting be NULL mf
问:
我有包含以下内容的类CPrinterDlg
// 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");
}
为了访问该功能,我这样做了:MainFrm
public:
CPrinterDlg m_PrinterDlg;
CPrinterDlg& getPrinterDlg() { return m_PrinterDlg; }
从我称之为 CSMsg''' 类的地方print_SignalData(...) is
void CSockMsg::Send_SignalData(unsigned char* msg)
{
//..
CMainFrame* pMain = (CMainFrame*)AfxGetApp()->GetMainWnd();
pMain->getPrinterDlg().print_SignalData(freq, wvlen);
}
当我直接从其中一个 CPrinter 函数调用时,它运行良好。但是,当我尝试从中调用它时,它从这一点开始给了我 Debug Assertion():。
我看到m_editRxFreq是.print_SignalData(...)
CSMsg::Send_SignalData(unsigned char* msg)
...MFC\winocc.cpp Line: 242
m_editRxFreq.SetWindowTextW(L"ddd");
NULL
那么,您如何看待为什么会成为 NULL?我该如何解决这个问题??m_editRxFreq
答:
0赞
Zrn-dev
8/4/2022
#1
解决!
我正在做
public:
CPrinterDlg m_PrinterDlg;
CPrinterDlg& getPrinterDlg() { return m_PrinterDlg; }
在CMainFrm.h
并实际创建和显示该 dlg
CPrinterDlg dlg;
dlg.Create(...);
dlg.ShowWindow(...);
在.CxxView::OnInitialUpdate()
这就是为什么当我打电话给它时,它给了我 NULL;pMain->getPrinterDlg().print_SignalData(freq, wvlen);
所以为了解决它,
我在课堂上创建了 CPrinterDlg,但没有在课堂上创建。dlg.Create(...)
CMainFrm
CxxxView
评论
CEdit
是一个类,所以永远不能为 NULL,只有指针可以为 NULL。不幸的是,这里没有足够的信息来解决您的问题。特别是,首先没有关于如何赋予值的内容。m_editRxFreq
m_editRxFreq
m_editRxFreq.m_hWnd
m_editRxFreq.m_hWnd