最近在项目中使用Teechart ocx版本替换了labview的老版本控件,显示效果和效率均有提升,可是却遇到多线程下报access violation的问题。多线程
翻遍大小论坛,最后在官网论坛找到相同问题,客服的答复是“多线程状况下,须要在线程中动态建立Teechart控件,否则mouse move事件可能会引发accessviolation 错误”。使用代码动态建立Teechart须要大量代码,在作多项定制并添加tools的状况下简直就是噩梦。labview的图表控件能够将配置导出为文件,动态建立的时候直接载入配置,在翻看Teechart配置工具后,终于让我找到了相似的方法,如下为使用过程(vs2010+teechart2010 ocx,其余版本或语言相似):工具
一、建立一个dialog,拖入一个teechart控件,在上面作好须要的各类配置。this
二、在Export选项下,Native卡中选择binary,导出配置文件,这里配置文件为.tee后缀。spa
三、在项目中,动态建立控件,并调用CImport类的LoadFromFile方法,载入刚才保存的配置文件,这样就完美的实现了动态加载的目的而避免写出巨量的配置代码线程
m_dyChart = new CTchart1(); m_dyChart->Create(NULL, NULL,WS_VISIBLE | WS_CHILD, CRect(0,0,0,0), this, 1234); CImport imp = static_cast<CImport>(m_dyChart->get_Import()); imp.LoadFromFile("dy.tee");