ASSERT(::IsWindow(m_hWnd))

yangshuosky 2008-08-06 03:38:47
我在对话框界面上建了一个TEXT控件,可每次一执行到ASSERT(::IsWindow(m_hWnd));就出现Access Violationg.怎么回事呢?
具体如下:
我新建了一基于CWnd的类,在这个类中调用另一个类(基于CDialog)中的函数,即((CClientDlg*)wavedlg)->GetPort(2);函数定义如下:
u_short CClientDlg::GetPort(int pt)
{
int nPort;
if(pt==0)//数据端口
{
GetDlgItem(IDC_DATAPORT)->GetWindowText(m_dataport);
nPort = atoi(m_dataport);
if(nPort < 1 || nPort > 65535)
{
MessageBox("端口号错误!");
return 0;
}
return nPort;
}
if(pt==1) //视频端口
{
GetDlgItem(IDC_VIDEOPORT)->GetWindowText(m_videoport);
nPort=atoi(m_videoport);
if(nPort < 1 || nPort > 65535)
{
MessageBox("端口号错误!");
return 0;
}
return nPort;
}
if(pt==2) //语音端口
{
GetDlgItem(IDC_WAVEPORT)->GetWindowText(m_waveport);
nPort=atoi(m_waveport);
if(nPort < 1 || nPort > 65535)
{
MessageBox("端口号错误!");
return 0;
}
return nPort;
}
else return 0;
}
调试的话就会在这里出问题。
...全文
2427 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phantom丶LF 2012-07-08
  • 打赏
  • 举报
回复
关注~~
fantasy4086 2011-12-04
  • 打赏
  • 举报
回复
还是没看懂啊
formajia5 2008-09-25
  • 打赏
  • 举报
回复
快乐顶贴,快乐看贴,快乐学习。
majiajun_no_3 2008-09-25
  • 打赏
  • 举报
回复
学习中
majiajun_no_3 2008-09-25
  • 打赏
  • 举报
回复
学习中
formajia3 2008-09-24
  • 打赏
  • 举报
回复
很受益!
lehedele 2008-09-24
  • 打赏
  • 举报
回复
潜水多年,今日上岸,继续学习
zhb1190 2008-08-08
  • 打赏
  • 举报
回复
应该是对象已经不存在了,搂主慢慢找一找!
sun_hw 2008-08-07
  • 打赏
  • 举报
回复
你不会在别的地方创建(New & Create)的CClientDlg对象吧?
在CWnd的类只声明了CClientDlg* 类型指针wavedlg就这么使用了?

呵呵
SkinBeauty 2008-08-06
  • 打赏
  • 举报
回复
可能:
1.没有创建(没有初始化好或者根本没有初始化);
2.已经创建的窗口已经销毁;
3.由于其他地方数据越界修改了数据;

自己跟踪一下句柄的值,调用前先拦截判断看看。
ostrich2fly 2008-08-06
  • 打赏
  • 举报
回复
我记得vc6中没有什么问题

但是在vc2005下就有这样的问题。

具体是什么原因 我不知道
yangshuosky 2008-08-06
  • 打赏
  • 举报
回复
MFC里面在界面上加控件不用自己new ,create啊。
ouyh12345 2008-08-06
  • 打赏
  • 举报
回复
new并且Create了?
yangshuosky 2008-08-06
  • 打赏
  • 举报
回复
是在被调用的那个类中创建显示吧?创建了啊
ouyh12345 2008-08-06
  • 打赏
  • 举报
回复
ASSERT(::IsWindow(m_hWnd))

控件还不是一个窗口。创建并显示了吗?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧