custom control使用问题

lodemenwwwww 2009-12-13 12:32:20
我现在用单视图创建了一个工程
在里面添加了一个custom control
还没有注册
运行的时候会谈出创建空文档失败
删掉这个custom control就又恢复正常了
这个问题怎么解决

另外还有一个问题
custom control,控件怎么注册?
好久以前自己做过,现在怎么也想不起来了
各位大虾给提个醒,说一个步骤
...全文
479 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwgddx 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cnzdgs 的回复:]
引用 11 楼 lodemenwwwww 的回复:
引用 10 楼 cnzdgs 的回复:
不在对话框资源上使用custom control。


这句话是什么意思?

就是对话框上不放custom control,在程序中创建。
[/Quote]

你说的应该是控件类,不是OCX控件吧.
似水流年__ 2009-12-14
  • 打赏
  • 举报
回复
顶下
lodemenwwwww 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cnzdgs 的回复:]
不在对话框资源上使用custom control。
[/Quote]

这句话是什么意思?
cnzdgs 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lodemenwwwww 的回复:]
引用 10 楼 cnzdgs 的回复:
不在对话框资源上使用custom control。


这句话是什么意思?
[/Quote]
就是对话框上不放custom control,在程序中创建。
cnzdgs 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lodemenwwwww 的回复:]
这个控件是别人的
我已经加入到工程中
并且在属性中填写了对应的类
RegisterClassEx这个函数在什么地方用?
为什么我在添加变量时没有相应的类来选择呢?

还有那个创建空白文档失败的原因是什么?
[/Quote]
RegisterClassEx在使用控件之前调用,一般在应用程序初始化时调用。
custom control貌似不能用VC添加关联变量。
因为创建窗口时要创建窗口上的控件,而其中的某个控件类没有注册,导致创建失败,所以创建空文档失败。
使用别人封装好的控件,应该根据其具体的封装方法来使用。如果该控件被封装为一个从CWnd派生的类,通常用法是定义一个类对象,在窗口初始化时调用Create函数来创建控件,不在对话框资源上使用custom control。
dvlinker 2009-12-13
  • 打赏
  • 举报
回复
关联控件变量时,直接手动添加就可以了。
(1)在头文件添加类似的代码:
	CColorDatePicker m_queryStartTime;//CColorDatePicker即是自定义控件类

(2)用DDX_Control()函数将变量和控件关联起来:
	DDX_Control(pDX, IDC_DATETIMEPICKER_START, m_queryStartTime);
WaistCoat12 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lodemenwwwww 的回复:]
这个控件是别人的
我已经加入到工程中
并且在属性中填写了对应的类
RegisterClassEx这个函数在什么地方用?
为什么我在添加变量时没有相应的类来选择呢?

还有那个创建空白文档失败的原因是什么?
[/Quote]

你的App::InitIntance()有没有调用AfxEnableControlContainer();,如果没有在开始部分加上。
lodemenwwwww 2009-12-13
  • 打赏
  • 举报
回复
这个控件是别人的
我已经加入到工程中
并且在属性中填写了对应的类
RegisterClassEx这个函数在什么地方用?
为什么我在添加变量时没有相应的类来选择呢?

还有那个创建空白文档失败的原因是什么?
dvlinker 2009-12-13
  • 打赏
  • 举报
回复
当然,可以关联变量,要包含自定义类的头文件。
dvlinker 2009-12-13
  • 打赏
  • 举报
回复
如果使用的是别人写的自定义控件,首先将其对应的.cpp和.h文件添加到工程中,然后在Custom控件属性中填写对应的自定义类的类名就可以了。
dvlinker 2009-12-13
  • 打赏
  • 举报
回复
正解![Quote=引用 3 楼 cnzdgs 的回复:]
首先自己决定控件的窗口类名,在控件属性中填写类名。程序中在使用控件之前用RegisterClassEx注册一个窗口类,类名要与控件属性中填写的一致,并定义一个窗口过程函数来处理控件的各种消息。
[/Quote]
cnzdgs 2009-12-13
  • 打赏
  • 举报
回复
首先自己决定控件的窗口类名,在控件属性中填写类名。程序中在使用控件之前用RegisterClassEx注册一个窗口类,类名要与控件属性中填写的一致,并定义一个窗口过程函数来处理控件的各种消息。
oyljerry 2009-12-13
  • 打赏
  • 举报
回复
先Regsvr32命令行注册控件
WaistCoat12 2009-12-13
  • 打赏
  • 举报
回复
注册用regsvr32 yourcontrol.ocx

或者通过LoadLibrary和GetProcAddress调用yourcontrol.ocx的DllRegisterServer函数

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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