有关ocx控件问题

q_orange2 2013-12-18 10:28:30
外部通过show接口显示ocx控件

type=new CTypeDlg();
type->Create(IDD_TYPEDIALOG,this);
type->ShowWindow(SW_SHOW);

type为ocx主对话框类指针。在ocx主对话框中有一关闭,用来关闭对话框。
q:如何在关闭按钮中将type置为NULL,方便下次再次显示
...全文
172 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2013-12-18
  • 打赏
  • 举报
回复
ocx响应关闭时,提交一个事件
许文君 2013-12-18
  • 打赏
  • 举报
回复
引用 7 楼 q_orange2 的回复:
引用 4 楼 xuddk727 的回复:
type是你调用方new出来的,因此在你ocx响应关闭的时候回传给调用方一个信息,然后调用方delete
在调用方那写了一个方法,在关闭之前会先调用这个方法delete。但是出现了访问冲突中断。。
不能先delete,只能是关闭之后再delete
q_orange2 2013-12-18
  • 打赏
  • 举报
回复
引用 8 楼 sd__q 的回复:
[quote=引用 6 楼 q_orange2 的回复:] [quote=引用 5 楼 sd__q 的回复:] [quote=引用 3 楼 q_orange2 的回复:] 不管我用什么办法将type置为空,再次调用show函数显示时。type都不为空了,这是什么原因呢
if(type==NULL)
	{
		MessageBox(_T("空"));
		type=new CTypeDlg();
		type->Create(IDD_TYPEDIALOG,this);
		type->ShowWindow(SW_SHOW);
		type->MoveWindow(x,y,530,400);
	}
	else 
	{
		MessageBox(_T("不为空"));
	}
重写对话框类的PostNcDestroy函数,加入以下代码试下

delete this;
type = null;
[/quote]type是在接口函数里面定义的,不是在对话框类里面的,。这样好像不行。[/quote]定义一个接口的指针,通过指针操作[/quote]额,还是不太明白。。
sd__q 2013-12-18
  • 打赏
  • 举报
回复
引用 6 楼 q_orange2 的回复:
[quote=引用 5 楼 sd__q 的回复:] [quote=引用 3 楼 q_orange2 的回复:] 不管我用什么办法将type置为空,再次调用show函数显示时。type都不为空了,这是什么原因呢
if(type==NULL)
	{
		MessageBox(_T("空"));
		type=new CTypeDlg();
		type->Create(IDD_TYPEDIALOG,this);
		type->ShowWindow(SW_SHOW);
		type->MoveWindow(x,y,530,400);
	}
	else 
	{
		MessageBox(_T("不为空"));
	}
重写对话框类的PostNcDestroy函数,加入以下代码试下

delete this;
type = null;
[/quote]type是在接口函数里面定义的,不是在对话框类里面的,。这样好像不行。[/quote]定义一个接口的指针,通过指针操作
q_orange2 2013-12-18
  • 打赏
  • 举报
回复
引用 4 楼 xuddk727 的回复:
type是你调用方new出来的,因此在你ocx响应关闭的时候回传给调用方一个信息,然后调用方delete
在调用方那写了一个方法,在关闭之前会先调用这个方法delete。但是出现了访问冲突中断。。
q_orange2 2013-12-18
  • 打赏
  • 举报
回复
引用 5 楼 sd__q 的回复:
[quote=引用 3 楼 q_orange2 的回复:] 不管我用什么办法将type置为空,再次调用show函数显示时。type都不为空了,这是什么原因呢
if(type==NULL)
	{
		MessageBox(_T("空"));
		type=new CTypeDlg();
		type->Create(IDD_TYPEDIALOG,this);
		type->ShowWindow(SW_SHOW);
		type->MoveWindow(x,y,530,400);
	}
	else 
	{
		MessageBox(_T("不为空"));
	}
重写对话框类的PostNcDestroy函数,加入以下代码试下

delete this;
type = null;
[/quote]type是在接口函数里面定义的,不是在对话框类里面的,。这样好像不行。
sd__q 2013-12-18
  • 打赏
  • 举报
回复
引用 3 楼 q_orange2 的回复:
不管我用什么办法将type置为空,再次调用show函数显示时。type都不为空了,这是什么原因呢
if(type==NULL)
	{
		MessageBox(_T("空"));
		type=new CTypeDlg();
		type->Create(IDD_TYPEDIALOG,this);
		type->ShowWindow(SW_SHOW);
		type->MoveWindow(x,y,530,400);
	}
	else 
	{
		MessageBox(_T("不为空"));
	}
重写对话框类的PostNcDestroy函数,加入以下代码试下

delete this;
type = null;
许文君 2013-12-18
  • 打赏
  • 举报
回复
type是你调用方new出来的,因此在你ocx响应关闭的时候回传给调用方一个信息,然后调用方delete
q_orange2 2013-12-18
  • 打赏
  • 举报
回复
不管我用什么办法将type置为空,再次调用show函数显示时。type都不为空了,这是什么原因呢
if(type==NULL)
	{
		MessageBox(_T("空"));
		type=new CTypeDlg();
		type->Create(IDD_TYPEDIALOG,this);
		type->ShowWindow(SW_SHOW);
		type->MoveWindow(x,y,530,400);
	}
	else 
	{
		MessageBox(_T("不为空"));
	}
q_orange2 2013-12-18
  • 打赏
  • 举报
回复
引用 1 楼 ouyh12345 的回复:
ocx响应关闭时,提交一个事件
能说的详细一点么。。我是在关闭按钮里面直接destroywindow,但是不管用什么办法,type都不为空。不知道为什么。

3,248

社区成员

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

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