mfc-MFC Dialog报错问题,m_hWnd为空

问题描述

MFC Dialog报错问题,m_hWnd为空

代码如下:
BOOL CVSOConnectorApp::InitInstance()
{
//m_pMainWnd = (CWnd*)malloc(sizeof(m_pMainWnd));
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);

InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

char buf[MAXBUFSIZE + 1];
char value[MAXPARAMETERLEN + 1];

CVSOConnectorDlg dlg;//报错地方,debug模式下只要执行到这就会报错,release下是ok的
m_pMainWnd = &dlg;

错误信息如图

解决方案

你创建变量还要DoModal才会真正生成对话框

 CVSOConnectorDlg dlg;
dlg.DoModal()

解决方案二:

CVSOConnectorDlg dlg;
dlg.Create(对话框资源id);

解决方案三:

有的,
CVSOConnectorDlg *dlg = new CVSOConnectorDlg;
m_pMainWnd = dlg;

    dlg->serverdetails.setServer(sd.getServer());
    dlg->serverdetails.setPort(sd.getPort());
    dlg->serverdetails.setUsername(sd.getUsername());
    dlg->serverdetails.setPassword(sd.getPassword());
    dlg->serverdetails.setDomain(sd.getDomain());
    dlg->serverdetails.setGatewayHostname(sd.getGatewayHostname());
    dlg->serverdetails.setFullScreen(true);

    if (pShellManager != NULL)
    {
        delete pShellManager;
    }

    return dlg->Create(IDD_VSOCONNECTOR_DIALOG);

解决方案四:

m_hWnd还是m_pMainWnd为空?
m_pMainWnd是什么类型

解决方案五:

要看一下CVSOConnectorDlg类的构造函数中写了什么

解决方案六:

将dlg换成CVSOConnectorDlg*,或者全局变量。
编译器bug!!!

解决方案七:

class CVSOConnectorDlg : public CDialogEx
{
// Construction
public:
CVSOConnectorDlg(CWnd* pParent = NULL); // standard constructor
~CVSOConnectorDlg();
// Dialog Data
enum { IDD = IDD_VSOCONNECTOR_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()

public:
CMstscax1 m_VSOConnector;
ServerDetails serverdetails;
afx_msg void OnBnClickedButton1();
INT_PTR DoModal();
DECLARE_EVENTSINK_MAP()
void OnDisconnectedMstscax1(long discReason);
void OnConnectedMstscax1();
//afx_msg void OnSize(UINT nType, int cx, int cy);

public:
CProgressBar pb;
void OnConnectingMstscax1();
void OnLogonErrorMstscax1(long lError);
afx_msg void OnSize(UINT nType, int cx, int cy);
CRect m_rect;
// afx_msg void OnNcPaint();
afx_msg void OnKillFocus(CWnd
pNewWnd);
afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
void OnRemoteProgramResultMstscax1(LPCTSTR bstrRemoteProgram, long lError, BOOL vbIsExecutable);
void OnRemoteProgramDisplayedMstscax1(BOOL vbDisplayed, unsigned long uDisplayInformation);
void OnIdleTimeoutNotificationMstscax1();
void OnConfirmCloseMstscax1(BOOL* pfAllowClose);
void OnWarningMstscax1(long warningCode);
void OnRequestContainerMinimizeMstscax1();
afx_msg void OnClose();
void OnEnterFullScreenModeMstscax1();
void OnLeaveFullScreenModeMstscax1();
void OnRequestGoFullScreenMstscax1();
void OnRequestLeaveFullScreenMstscax1();
void OnRemoteDesktopSizeChangeMstscax1(long width, long height);
};

时间: 2025-01-21 19:32:04

mfc-MFC Dialog报错问题,m_hWnd为空的相关文章

c++-MFC ADO OnSelchangeListaccess()报错问题

问题描述 MFC ADO OnSelchangeListaccess()报错问题 之前没用过ADO,学习过程中使用OnSelchangeListaccess()报错了,代码如下: BOOL CDataBaseMFCTestDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将"关于..."菜单项添加到系统菜单中. // IDM_ABOUTBOX 必须在系统命令范围内. ASSERT((IDM_ABOUTBOX & 0xFFF0

javascript代码在ie8里报错 document.getElementById(...) 为空或不是对象的解决方法[原创]_javascript技巧

ie8中对于声明文档类型更加严格如下面的代码. 运行环境: 清空 Windows平台 S60v2 S60v3 CHM PDF PPT WORD EXCEL asp asp+access asp+sqlserver asp+sql/access php源码 php php+mysqljsp asp.net源码 asp.net asp.net+access asp.net+sql asp.net+sql/access [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 可以看到这段代码在ie

jxl读取Excel时 读到空单元格的时候就报错

问题描述 jxl读取Excel时读到空单元格的时候就报错jxl.read.biff.BlankCellelseif(cell.getType()==CellType.EMPTY){EmptyCellec=(EmptyCell)cell;returnec.getContents(); 解决方案 解决方案二:急啊各位大哥解决方案三:你是说判断是否为空的时候报错.还是读取空的时候报错?如果读取的时候报错,那么这个空的话,就直接不读了.赋值为空就行了.如果判断为空,那么我感觉是你判断的条件里面有问题.把

控件-为什么我的MFC程序加加完控制变量运行就报错

问题描述 为什么我的MFC程序加加完控制变量运行就报错 不加控制变量之前都是可以正常运行的,一旦在类向导中添加某个控件的控制变量就报错,这是什么原因? 我没有直接修改代码,只是在class wizard里面的member variables添加了控件的控制变量,程序就开始报错了,删了控制变量又能够正常运行了 解决方案 你只提供这个对话框,肯定没有人能帮上你.你至少也要提供你修改的代码吧,这样才能分析问题. 解决方案二: 你添加了什么控件变量? 解决方案三: 按F5来调试运行,看看代码蹦在了什么地

mfc控件-Edit Control控件赋值报错

问题描述 Edit Control控件赋值报错 求问大神,我从数据库取了一条记录出来,想要赋值给EditControl,代码如下: if (pRst->rsEOF) { MessageBox(_T("没有数据")); } else; {MessageBox(_T("有数据")); CString m = (LPCTSTR)_bstr_t(pRst->GetCollect("Book_ID")); AfxMessageBox(m); m

visual studio-关于MFC问题报错,TCHAR*类型的实参与 HWND类型的形参不兼容

问题描述 关于MFC问题报错,TCHAR*类型的实参与 HWND类型的形参不兼容 刚刚接触MFC,声明了TCHAR类型的chBuf[ ],MessageBox(chBuf)这句代码在别人的程序里是对的,我的VS就会报错,显示"TCHAR * 类型的实参与 HWND类型的形参不兼容".这是为什么啊?求大神指教~ 解决方案 const char*类型的实参与LPCTSTR类型的形参不兼容 MFC"char *"类型的实参与"LPCTSTR"类型的形参

mfc-关于MFC Recordset多次打开报错

问题描述 关于MFC Recordset多次打开报错 这两天刚接触MFC,还不太清楚,求问大神: 在第一个cpp中 Adosql mysql; pRst = mysql.Getbooks(); 取到了值,但是到了第二个cpp中写到 Adosql mysql; pRst =mysql.GetbookByID(); try{ pRst2->Open("SELECT * FROM Book_Info WHERE Book_ID= '10001'", m_pConnection.GetI

MFC多线程程序如果一个线程报错

问题描述 MFC多线程程序如果一个线程报错 MFC多线程程序如果一个线程报错,关闭这个线程,然后重新执行这个线程,不丢失数据怎么做? 解决方案 每执行一个,就把数据保存到文件中,然后恢复的时候从文件读取. 解决方案二: 没办法 线程强制结束 数据就都丢失了

mfc停靠窗口获取主框架报错

问题描述 mfc停靠窗口获取主框架报错 我的停靠窗口(就是系统自动生成的那个属性窗口)里的定时器里需要不停地获取当前文档的信息.然后我就想先获取主框架的指针,再GetActiveDocument(), 但是会报错.这个主框架指针必须得在这个属性窗口类里所有地方都能调用,所以我在头文件里声明一个 CMainFrame* pMain; 但是报错.如果我在OnTimer里这样写,也报错.怎么办? 解决方案 MFC框架中获取窗口/视图句柄MFC 窗口基本框架 解决方案二: 不应该这么做吧,想想吧,一个t