MFC OCX Statictext控件更新文本的问题

我是学友 2016-12-13 11:49:08
VS2008写了个控件,用了一个Statictext显示几个运行状态的文本,在插件运行过程中要更新几次。
现在是用VS的调试容器调试的时候没问题,但是用浏览器调用,就崩溃,去掉运行过程中的几次更新就不崩溃了,所以怀疑是这个控件引起。

这是这个控件的属性


在界面类中的showwindows消息里面获取了句柄
void DialogMain::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);

// TODO: 在此处添加消息处理程序代码

//五个按钮组成的区域是一个整体,相对坐标为0 0
//各个按钮缝隙为5

int X = 0 + 820; //初始820
int Y = 0 + 150; //初始150

//位置和大小
CWnd *pWnd = GetDlgItem(IDC_BUTTON_UP);
pWnd->SetWindowPos(NULL,X+55,Y,50,50,NULL);

pWnd = GetDlgItem(IDC_BUTTON_LEFT);
pWnd->SetWindowPos(NULL,X,Y+55,50,50,NULL);

pWnd = GetDlgItem(IDC_BUTTON_RIGHT);
pWnd->SetWindowPos(NULL,X+110,Y+55,50,50,NULL);

pWnd = GetDlgItem(IDC_BUTTON_DOWN);
pWnd->SetWindowPos(NULL,X+55,Y+110,50,50,NULL);

pWnd = GetDlgItem(IDC_BUTTON_AUTO);
pWnd->SetWindowPos(NULL,X+55,Y+55,50,50,NULL);

//加载图片
HBITMAP hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP_UP));
CButton *cbutton = (CButton *)GetDlgItem(IDC_BUTTON_UP);
cbutton->SetBitmap(hBitmap);

hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP_LEFT));
cbutton = (CButton *)GetDlgItem(IDC_BUTTON_LEFT);
cbutton->SetBitmap(hBitmap);

hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP_RIGHT));
cbutton = (CButton *)GetDlgItem(IDC_BUTTON_RIGHT);
cbutton->SetBitmap(hBitmap);

hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP_DOWN));
cbutton = (CButton *)GetDlgItem(IDC_BUTTON_DOWN);
cbutton->SetBitmap(hBitmap);

hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP_AUTO));
cbutton = (CButton *)GetDlgItem(IDC_BUTTON_AUTO);
cbutton->SetBitmap(hBitmap);


//加载背景图片
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP_BK);
m_brush.CreatePatternBrush(&bmp);

//视频加载控件
PIC = GetDlgItem(IDC_ANIMATE_VIDEO);
PIC->SetWindowPos(NULL,5,5,790,490,NULL);

TEXT = GetDlgItem(IDC_STATIC_TEXT);
TEXT->SetWindowPos(NULL,820,400,190,50,NULL);
//CFont font;
//font.CreatePointFont(20,_T("黑体"),NULL);
//TEXT->SetFont(&font);
}


最后几行的TEXT 是就是那个控件,在 界面类头文件里定义的 CWnd *TEXT;

然后在工程的控制类homevideoCtrl.cpp里面进行调用

int ChomevideoCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;


// TODO: 在此添加您专用的创建代码

//加载
dialogmain.Create(IDD_DIALOG2, this);
//dialogvideo.Create(IDD_DIALOG1,this); //父窗体指针为dialogmain
//dialogvideo.SetParent(FromHandle(dialogmain.m_hWnd));
//
// dialogvideo.SetWindowPos(NULL, 0, 0, 800, 500, SWP_NOMOVE); //第一个参数置顶
dialogmain.SetWindowPos(NULL,0,0,1000,500,NULL);


dialogmain.TEXT->SetWindowText("正在连接摄像头请稍后");
YSY_SDK_Init("at.3su9cbc6557jegmwbngb0dby401p0ury-58e7ip1m8q-1ykujg9-8itg914wb" ,"640033347");

return 0;
}


控制类的OnCreate函数调用一次dialogmain.TEXT->SetWindowText还正常
但是在YSY_SDK_Init函数里面再调用就会出问题

//SDK初始化
void ChomevideoCtrl::YSY_SDK_Init(char * accesstoken, char * deviceseriak)
{
//JS传入参数
szAccessToken = accesstoken;
szDeviceSerial = deviceseriak;

//SDK 接口
int result = OpenSDK_Init(g_szAppKey);

//result = YSY_SDK_DEVINFO();
//result = YSY_SDK_AllocSession();
//result = YSY_SDK_Real();

//dialogmain.TEXT->SetWindowText("11111");
if(result==0)
{
//dialogmain.TEXT->SetWindowText("视频库初始化成功");

//获取设备信息
result = YSY_SDK_DEVINFO();
if(result==0)
{
//dialogmain.TEXT->SetWindowText("获取摄像头信息成功");

//分配会话
result = YSY_SDK_AllocSession();
if(result==0)
{
//dialogmain.TEXT->SetWindowText("分配会话成功");

//开始预览
result = YSY_SDK_Real();
if(result==0)
{
dialogmain.TEXT->SetWindowText("开始播放视频");
UpdateWindow();
}
else
{
//dialogmain.TEXT->SetWindowText("视频启动失败,刷新尝试");
}
}
else
{
//dialogmain.TEXT->SetWindowText("分配会话失败");
}
}
else
{
//dialogmain.TEXT->SetWindowText("获取摄像头信息失败");
}
}
else
{
//dialogmain.TEXT->SetWindowText("视频库初始化失败");
}
}


这些代码在调试容器里面没问题,一上浏览器就崩溃,测试用的360浏览器。
大婶们给看看,不知道我描述的够不够清楚
...全文
811 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2016-12-13
  • 打赏
  • 举报
回复
逻辑上再严谨些 CWnd *pWnd = GetDlgItem(IDC_BUTTON_UP); if(pWnd) pWnd->SetWindowPos(NULL,X+55,Y,50,50,NULL); if(dlg.Create(xxxxx)) { } 写日志
oyljerry 2016-12-13
  • 打赏
  • 举报
回复
多加一些调试信息,看是不是前面就有api失败了 其次就是换IE等浏览器试试。
内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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