VC主对话框怎么应用子对话框中的TeeChart控件?悬赏20元求救了.
本帖最后由 yjamdfhqjs 于 2016-10-18 18:25 编辑最近在VC应用TEECHART中遇到一个问题,Teechart图表我是用TAB控件设在一个子对话框中的,现在需要在主对话框中进行初始化控制
现在遇到的情况是:
1,Teechart的图表初始化函数如果话在放在子对话框的初始化函数的话可以正常的对图表进行初始化操作。
初始化方式如下:
BOOL CLineGraph::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_screenWidth= GetSystemMetrics(SM_CXFULLSCREEN);
m_screenHeight = GetSystemMetrics(SM_CYFULLSCREEN);
InitChart1(0);
InitChart2(0);
return TRUE;
}
2,在其他的子对话框里面通过指针也可以对TeeChart图表进行初始化操作,方法是这样的:
CLineGraph *pDlg = (CLineGraph *)GetParent();//获取子对话框的类指针
pDlg->Initchart2(0);//初始化子对话框的Teechart图表
3,在主对话框通过通过定义类变量来初始化子对话框中的Teechart图表就出问题了,初始化的方式为
CLineGraph pDlg;
pDlg.InitChart2(0);
这样就会出问题,跟踪了一下,在初始化函数的前面部分还没有问题,但是到了用CSeries类定义一下变量时就会发生错误
那个地方的代码为:
CSeries lineseries = (CSeries)m_chart2.Series(0);
如果没有CSeries相关的类变量操作的话,就不会发生错误,大家知道这是什么原因吗?
希望大家帮忙一下哦 我都卡了好几天了。 顺便吐槽一下,公司的电脑都被加密了,不能复制,这些代码我得一个一个敲上来。 Teechart如果放在子对话框,应该在子对话框中的初始函数中进行初始化
主对话框初始化的时候,子对话框应该还没有创建,所以获取不到子对话框的Teechart
个人的一点理解,不一定正确
你可以试试用try catch捕捉一下错误分析下看看
ps:我很水的~{:titter:}{:titter:} 337zhang 发表于 2016-10-18 15:37
Teechart如果放在子对话框,应该在子对话框中的初始函数中进行初始化
主对话框初始化的时候,子对话框应该 ...
try catch应该是C#的语句吧 {:lol:}最近也在学C# yjamdfhqjs 发表于 2016-10-18 15:39
try catch应该是C#的语句吧 最近也在学C#
C++可以的,我用过~{:tongue:} 337zhang 发表于 2016-10-18 15:40
C++可以的,我用过~
Bing了一下 还真是 学到了 顶一下,让大家都可以看到 大家帮忙看看哦 楼主,你好,我在用teechart的时候刷新的速度跟不上,有什么方法可以解决么? 湛无双 发表于 2016-10-18 19:08
楼主,你好,我在用teechart的时候刷新的速度跟不上,有什么方法可以解决么? ...
我没有遇到你的刷新速度是多快 楼主试下在创建子对话框的时候保存子对话框的指针,然后用指针操作。 yjamdfhqjs 发表于 2016-10-18 19:20
我没有遇到你的刷新速度是多快
我刷新速度在20帧,不过这个帧数跳动比较大 和可能是你的对话框窗口还没创建完成呢!你就调用 pDlg.InitChart2(0); 导致的。
猜测你用的是非模块模态对话框,可能需要这样处理
CLineGraph pDlg;
pDlg.Create(CLineGraph ::IDD);
pDlg.ShowWindow(SW_SHOWNORMAL);
pDlg.InitChart2(0); qidaimengxing 发表于 2016-10-19 12:46
和可能是你的对话框窗口还没创建完成呢!你就调用 pDlg.InitChart2(0); 导致的。
猜测你用的是非模块模态对 ...
OK晚上回去试一下 场景是不是这样,有一个主对话框MainDlg,里面设置了一个TabCtrl,然后用TabCtrl控件里面关联了子对话框ChildDlg1,ChildDlg2...,那么初始化TeeChart应该在ChildDlg的OnInitDialog()函数里完成,因为主对话框初始化的时候子对话框还没有创建。 zhaomzs 发表于 2016-10-19 13:35
场景是不是这样,有一个主对话框MainDlg,里面设置了一个TabCtrl,然后用TabCtrl控件里面关联了子对话框Chi ...
恩 你说的场景是那样的 如果一定要应用呢 应该怎么做 yjamdfhqjs 发表于 2016-10-19 14:02
恩 你说的场景是那样的 如果一定要应用呢 应该怎么做
不要在主对话框的初始化函数里面做,在show里面就可以了,show的时候,所有的都创建了 qidaimengxing 发表于 2016-10-19 12:46
和可能是你的对话框窗口还没创建完成呢!你就调用 pDlg.InitChart2(0); 导致的。
猜测你用的是非模块模态对 ...
你好在吗 在我主对话框里面调用子对话框的函数时没有发生错误了 但是这个InitChart2没有发生作用呢?
首先我把InitChart2(0);这个初始化函数放到子对话框的InitDialog函数中就可以正常的发生作用,但是我如果
把这个初始化函数放到主对话框的那个函数里面就没有作用了 是怎么回事呢 yjamdfhqjs 发表于 2016-10-19 20:33
你好在吗 在我主对话框里面调用子对话框的函数时没有发生错误了 但是这个InitChart2没有发生作用呢?
...
说了多少遍赶紧放弃mfc你不听,有你跟mfc库折腾的这点时间,拿bcb或.net早就写完了。
bcb里面你在构造函数里面做什么都合法。构造函数里面明明还没有窗口,你去取自己的hwnd照样会正常,因为系统库替你做了很多!而古老的mfc根本没考虑这些,名曰两阶段构造。在没真正构造完成之前想用,就等着去哭吧… redroof 发表于 2016-10-20 10:23
说了多少遍赶紧放弃mfc你不听,有你跟mfc库折腾的这点时间,拿bcb或.net早就写完了。
bcb里面你在构造函 ...
呵呵 C#我也在学的 但是这个程序不是由我一个人来做呢 后面还有神经网络的算法、联网、加密的要求得由别人来做了 yjamdfhqjs 发表于 2016-10-20 10:30
呵呵 C#我也在学的 但是这个程序不是由我一个人来做呢 后面还有神经网络的算法、联网、加密的要求得由别 ...
别的算法只能用vc吗?那就把算法变成dll,给做界面的程序调用即可。
VC写没界面的程序还是很好用的 本帖最后由 redroof 于 2016-10-20 12:40 编辑
看起来你没有多少选择。
界面部分赶紧躲开mfc吧!算法部分vc的优化还是不错的 主对话框新建一个数据结构体存放初始化数据,在子对话框中建对应的待构,主对话框实例化子对话框时传入数据指针。子对话框要进行派生。
页:
[1]