gpt4 book ai didi

c++ - ASSERT(::IsWindow(m_hWnd)) 问题,不知道哪里出了问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:48 25 4
gpt4 key购买 nike

我的代码中有一个错误让我很头疼,所以在多次尝试调试之后我最终决定看看是否有其他人知道我的问题是什么。

我正在尝试将网格对象添加到我拥有的对话框中,但我一直点击标题中提到的 assert,但我不知道为什么。

LONG myDialog::OnInitDialog(UINT wParam, LONG lParam)
{
BOOL bRet = super::OnInitDialog();

InitGridControl();
InitLayout();

myApp.ActiveDocChangeEvent->Attach(
RefMemberDelegate1(*this, &myDialog::OnNewDoc), this); // attach to event so I know when document is created

return bRet;
}

void myDialog::OnNewDoc(CDerivedDocument* pNewDoc)
{
pNewDoc->SetMyDialog(this); // when new document is created, set pointer to dialog
}

void myDialog::InitGridControl()
{
CRect rect;
// Get the grid area rectangle and set it up.
GetDlgItem(IDC_GRID)->GetClientRect(rect);
GetDlgItem(IDC_GRID)->MapWindowPoints(this, &rect); // replacing dummy image with the grid

m_Grid = new myGridCtrl;
bool result = m_Grid->Create(WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP, rect, this, IDC_GRID);


// Set the appropriate options
//...options...

m_Grid->InsertColumn(0, _T("Name"), 100); // doesn't seem to crash here, which means grid is created okay?
}


void myDialog::PopulateGridControl(BOOL bRedraw, CDerivedDocument * pDoc)
{
if (GetSafeHwnd() == NULL)
return;

// get handles to document and stuff

m_Grid->SetRedraw(FALSE); // ** ASSERT() CALL IS HERE **
m_Grid->RemoveAll();

// other stuff..
}


/////////////////////


// In CDocument, once it is created...

CDerivedDocument::SetMyDoc(myDialog * pDlg)
{
pDlg->PopulateGridControl(true,this);
}

知道发生了什么事吗?我的意思是,我只在所有内容都初始化后才创建对话框,所以那里应该没有问题。 m_Grid.Create()返回true,则创建成功。为什么 SetRedraw() 触发 assert m_hWnd 不是窗口句柄? m_hWnd 在哪里设置?

感谢您提供的任何帮助。

干杯

最佳答案

你确定在你调用时创建了对话框吗
CDerivedDocument::SetMyDoc(myDialog * pDlg)?

我看到的是您正在从文档中加载网格(和对话框),您应该使用文档从 View 中加载对话框和网格。

这可能不是您断言问题的直接原因,但仍然是一种改进。它可能只是把事情按正确的顺序排列并解决这个问题。

关于c++ - ASSERT(::IsWindow(m_hWnd)) 问题,不知道哪里出了问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7756225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com