我得一个对话框对应的类头文件中再多定义一个变量就出错!
解决方案 »
- DLL中调用DLL出现_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)错误
- DLL函数调用的地址映射问题
- VC中如何绘制位图
- 菜鸟问题,请问如何在程序运行中更改控件属性?
- 串口使用事件接收时 如何确定是否超时?
- 急聘 - VC开发高手 (上海徐家汇)
- 如何让程序运行时最小化,不出现界面,基于cview的单文档程序
- 征集VC++高手,请留QQ!
- 用什么控件读取数据库里面的binary数据
- IT小李传
- 我想用odbc api来获得某个数据库某个对象(表、存储过程等)的定义,也即导出它的定义。
- 明天要去一家公司面试,是电力行业的,岗位要求是关于组态软件开发方面的,希望各位能介绍有关组态软件方面的知识或一些链接。
Dialog类的对象通常是创建在栈上的,(特别是模态dialog),所以受到栈的大小限制.如果你的类定义中使用了大量地内存.如果楼主真得想解决问题,就应该把你的定义贴出来.
多谢了!
class CPair : public CDialog
{
// Construction
public:
void UDsort_k(int n);
void UDsort_f(int n);
void MarkStrXY(CString sign);
virtual BOOL PreTranslateMessage(MSG* pMsg);
// HICON m_hIcon;
void PairUpDown();
void NoUpDown();
void SelectKF();
float k1_add_k2;
int select_number_k,select_number_f;
CString type;
float errK,errF;
float fErrorK;//调接K值误差
int iResultNum;
CDataGet DataGet,DataGet1,DataGet2,DataGet3,DataGet4,DataGet5;
void sort_f(int n);
void sort_k(int n);
void IndataToStr();
void FormClear();
CPair(CWnd* pParent = NULL); // standard constructor
void SaveInfo(CString name,CString type,CString date,int num,float Quality,float UpK,float DownK,float UpF,float DownF,CString FKUp,CString FKDown);
int UpDown;
struct KArray//存储k值的数组
{
int i1,i2;
}select_k[350];
struct FArray//存储f值的数组
{
int j1,j2;
}select_f[350];
struct TestDataArray
{
int n;
float f,k;
}str[11][21],UpStr[11][21],DownStr[11][21];
struct PairInfo
{
int n;
float UpK,DownK,UpF,DownF,f;
bool UpDown;
CString FKUp,FKDown;
}PairInfo[100];
// Dialog Data
//{{AFX_DATA(CPair)
enum { IDD = IDD_Pair };
CComboBox m_type;
CListBox m_list;
COleDateTime m_date;
float m_frequency;
CString m_name;
int m_num;
float m_weight;
float m_f1f2;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPair)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL// Implementation
protected:
CToolTipCtrl m_tooltip; // Generated message map functions
//{{AFX_MSG(CPair)
afx_msg void Onpair();
afx_msg void OnSavePair();
virtual BOOL OnInitDialog();
afx_msg void OnButton1();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_PAIR_H__E2201721_FACA_11D6_8133_00E04C3BF642__INCLUDED_)
{
m_pselectk = new KArray[350];
...
}
CPair ::~CPair ()
{
delete m_pselectk;
}
CDataGet DataGet,DataGet1,DataGet2,DataGet3,DataGet4,DataGet5;
不知其大小.话说回来,有三种方法解决这类问题.
1. 调整栈的缺省大小.(不建议),使用Setting->link->output->stack allocation修改.
2. 不修改其CPair类,而将其建于堆上.(强烈推荐)相信你的原有代码.
CPair dlg();
dlg.DoModal();
改为
CPair* pDlg=new CPari();
pDlg->DoModal():
delete pDlg;
3. 修改CPair类,将其部份变量改在堆上申请.(一般推荐)
struct PairInfo
{
int n;
float UpK,DownK,UpF,DownF,f;
bool UpDown;
CString FKUp,FKDown;
}PairInfo[100];
改为
class PairInfo
{
public:
int n;
float UpK,DownK,UpF,DownF,f;
bool UpDown;
CString FKUp,FKDown;
};
PairInfo *m_pInfoTable在你的constructor中
m_pInfoTable= new PairInfo[100];
在你的destructor中
delete []m_pInfoTable;