MFC OCX Statictext控件更新文本的问题
VS2008写了个控件,用了一个Statictext显示几个运行状态的文本,在插件运行过程中要更新几次。
现在是用VS的调试容器调试的时候没问题,但是用浏览器调用,就崩溃,去掉运行过程中的几次更新就不崩溃了,所以怀疑是这个控件引起。
这是这个控件的属性

在界面类中的showwindows消息里面获取了句柄
最后几行的TEXT 是就是那个控件,在 界面类头文件里定义的 CWnd *TEXT;
然后在工程的控制类homevideoCtrl.cpp里面进行调用
控制类的OnCreate函数调用一次dialogmain.TEXT->SetWindowText还正常
但是在YSY_SDK_Init函数里面再调用就会出问题
这些代码在调试容器里面没问题,一上浏览器就崩溃,测试用的360浏览器。
大婶们给看看,不知道我描述的够不够清楚
现在是用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浏览器。
大婶们给看看,不知道我描述的够不够清楚
...全文
相关推荐
基于MFC的OCX控件开发教程及示例源代码
压缩包内含基于MFC的ActiveX控件开发pdf;示例包括1、ocx控件开发实现访问海康摄像头 云台控制 预置点设置等基本功能;2、web测试ocx控件相关功能接口,传参及属性设置等
基于vs2010 MFC 开发的读取海康卫视视频的ocx 控件
本程序基于vs2010 MFC 开发的读取海康卫视硬盘录像机的ocx可视化界面控件,可以实时预览视频图像,云台控制,按指定时间回放视频,快进,慢进等功能。 oxc 放置在IFrame框架中,IFrame框架有刷新时视频不闪烁,解决了C# 开发的Active控件中视频闪烁问题
win10+VS2017成功设置MSChart控件MSCHRT20.ocx
win10最新版、Visual Studio community 2017版本是15.9.4,NET Framework是4.7.0.056,成功设置MSChart控件。具体可以参考文件
VC MFC日历控件ocx activex
VISUAL C++ MFC日历控件CALENDER
pdf控件 OCX型
一个蛮好用的可以显示PDF图片的控件,基本功能都有,但是遗憾的是没有打印的功能。(PS:非原创,如有侵权,请联系删除)。编译工具:VS2015; 语言:C++; 框架:MFC基于对话框的应用程序。放大,缩小,左转,右转,跳页,目录等基本功能都有的。对于只是调PDF来看看的情况还是比较友好的。(/手动捂脸)都没打算要分的,,,无奈现在少了0分这个选项


