我先在基于面板的工程Test.dsw中加了一个Definition.h,
在Definition.h 中我定义了一个……
typedef struct _ChannelInfo_
{
CChStatus ChStatus ; //通道状态
char StrChDTMF[100] ; //当前通道收到的DTMF码
CChType ChType ; //通道类型
CString CurDoThing ; //当前该通道正在做的动作
CString NextDoThing ; //当前该通道下一部要做的动作
short UserToTrunk ; //内线所对应的外线通道(人工转接)
short TrunkToUser ; //外线所对应的内线通道(人工转接)
}CChannelInfo;然后我在TestDlg.h 里定义了(当然先#include "Definition.h")
CChannelInfo ChnInfo[255];
然后我运行一下,编译通过,但我的界面弹不出来了?!
我把定义行去掉,……//CChannelInfo ChnInfo[255];
我的界面就弹出来了,或者我 不定义 ChnInfo[255]那么多,
就 CChannelInfo ChnInfo[2];
界面也能弹出来。
是不是内容,或CPU堆栈什么容量有限?!?
不解,请指教!谢…………
在Definition.h 中我定义了一个……
typedef struct _ChannelInfo_
{
CChStatus ChStatus ; //通道状态
char StrChDTMF[100] ; //当前通道收到的DTMF码
CChType ChType ; //通道类型
CString CurDoThing ; //当前该通道正在做的动作
CString NextDoThing ; //当前该通道下一部要做的动作
short UserToTrunk ; //内线所对应的外线通道(人工转接)
short TrunkToUser ; //外线所对应的内线通道(人工转接)
}CChannelInfo;然后我在TestDlg.h 里定义了(当然先#include "Definition.h")
CChannelInfo ChnInfo[255];
然后我运行一下,编译通过,但我的界面弹不出来了?!
我把定义行去掉,……//CChannelInfo ChnInfo[255];
我的界面就弹出来了,或者我 不定义 ChnInfo[255]那么多,
就 CChannelInfo ChnInfo[2];
界面也能弹出来。
是不是内容,或CPU堆栈什么容量有限?!?
不解,请指教!谢…………
通道很多的
Debug Assertion Failed!
…………
File:dlgcore.cpp
Line:………
For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
终止(A) 重试(R) 忽略(I)
能给点意见吗?我该怎么办??
系统给我报出这样的错误提示:
Debug Assertion Failed!
…………
File:dlgcore.cpp
Line:………
For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
终止(A) 重试(R) 忽略(I)
能给点意见吗?我该怎么办??
////这时候你按 重试 在debug模式下vc会自动停在assert error的那句话上
然后就alt+7 来看call stack吧 一级一级的找 看看是哪个函数的哪一行导致了这个assert error
enum CChStatus
{
Idle, //空闲
Busy, //忙
SendFax, //发送传真
RecFax //接收传真
} ;enum CChType
{
DTCCh, //数字中继
TrunkCh, //模拟外线
UserCh, //模拟内线
WatchCh, //模拟监控
NoModule //无模块
} ;
typedef struct _ChannelInfo_
{
CChStatus ChStatus ; //通道状态
char StrChDTMF[100] ; //当前通道收到的DTMF码
CChType ChType ; //通道类型
CString CurDoThing ; //当前该通道正在做的动作
CString NextDoThing ; //当前该通道下一部要做的动作
short UserToTrunk ; //内线所对应的外线通道(人工转接)
short TrunkToUser ; //外线所对应的内线通道(人工转接)
}CChannelInfo;
在TestDlg.h 里
#include "Definition.h"
……
……
public:
CChannelInfo chnInfo[255];
编译无任何问题,但面板显示不出来,并出现ASSERT症状!
public:
CCjannelInfo *chnInfo;.....
chnInfo=new CCjannelInfo[255];从你的定义看,这个结构占用较多存储空间,像你这样分配的确有可能会出错的。
其中改成了和你描述的一样CChannelInfo ChnInfo[255];
也没有发现问题呀?!或者你通过菜单"Build"-Rebuild All一遍再试试看吧
是我程序其它地方有问题。
不过我还是有点迷惑,比如我 定义 CChannelInfo ChnInfo[2];
或者数组小点就好用,我糊涂。
但问题总算过去了。多谢各位的帮助!马上散分!