获取对话框当前cfont_关于mfc多个对话框m_hWnd的值的问题

在MFC程序中,开发者遇到在DialogB中添加TabCtrl控件时,控件m_hWnd为空导致程序崩溃的问题。经过讨论,问题可能出在CTabCtrl对象未正确关联到TabCtrl窗口。通过检查代码,发现已经使用DDX_Control在DoDataExchange函数中关联了控件,但仍然出现错误。进一步分析可能需要检查其他初始化步骤或控件的使用方法。
摘要由CSDN通过智能技术生成

你的位置:

问答吧

-> VC

-> 问题详情

关于mfc多个对话框m_hWnd的值的问题

我创建了一个MFC DIALOG程序,之后,我插入了一个dialog,总共就有两个dialog了,dialogA,和dialogB,我在DialogB上面,使用了一个TabCtrl控件,但是总是提示这个TabCtrl的m_hWnd是空值!

作者: gbenginer

发布时间: 2010-09-29

里面加点东西试试?

作者: gofqjyie

发布时间: 2010-09-29

贴代码,把情况说清楚

作者: hztj2005

发布时间: 2010-09-29

你的CTabCtrl类对象关联了TabCtrl窗口了没?

作者: VisualEleven

发布时间: 2010-09-29

引用 3 楼 visualeleven 的回复:

你的CTabCtrl类对象关联了TabCtrl窗口了没?

关联窗口??? 怎么关联啊

作者: gbenginer

发布时间: 2010-09-29

C/C++ code

voidCOnlineMain::onCreateTab()

{

TCITEM item;

item.mask=TCIF_TEXT;

item.pszText=_T("信息面板");

m_TaskTab.InsertItem (0,&item);//创建标签m_Info.Create(IDD_INFOMAIN,&m_TaskTab);//位置信息m_Info.SetWindowPos(NULL,2,25,100,100,SWP_SHOWWINDOW );

}

C/C++ code

BOOL COnlineMain::OnInitDialog()

{

CFont*m_Font;

m_Font=newCFont;

m_Font->CreateFont(25,0,0,0,700,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,_T("黑体"));

GetDlgItem(IDC_NAMETEST)->SetFont(m_Font);

onCreateTab();returnTRUE;

}

作者: gbenginer

发布时间: 2010-09-29

m_TaskTab.InsertItem (0,&item);

这一句,就提示m_TaskTab为空!

作者: gbenginer

发布时间: 2010-09-29

引用 4 楼 gbenginer 的回复:

引用 3 楼 visualeleven 的回复:

你的CTabCtrl类对象关联了TabCtrl窗口了没?

关联窗口??? 怎么关联啊

初学啊,DDX_Control,DoDataExchange()函数里关联,或者调用CWnd::SubclassDlgItem()

作者: VisualEleven

发布时间: 2010-09-29

哈哈哈,见笑了,初学啊

是的,已经关联了

void COnlineMain::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_NAMETEST, m_fontTest);

DDX_Control(pDX, IDC_BQY, m_TaskTab);

}

作者: gbenginer

发布时间: 2010-09-29

引用 6 楼 gbenginer 的回复:

m_TaskTab.InsertItem (0,&item);

这一句,就提示m_TaskTab为空!

你说的m_TaskTab为空是什么意思?标签上没有显示你设置的文字还是什么的呢?

作者: VisualEleven

发布时间: 2010-09-29

不是的,是crash了。然后调到这里

_AFXCMN_INLINE LONG CTabCtrl::InsertItem(int nItem, TCITEM* pTabCtrlItem)

{ ASSERT(::IsWindow(m_hWnd)); return (LONG)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem); }

作者: gbenginer

发布时间: 2010-09-29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值