如何使用派生出来的控件,怎么放到窗体上?

亚非 2006-01-09 09:08:39
从CButton派生而来的CButtonST类,请问如果使用派生的控件呢?在控件面板里找不到。
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ironwill2004 2006-06-20
  • 打赏
  • 举报
回复
郁闷,我这么做了,为什么不能运行??
错误提示:
d:\study\11\pingbiao\pingbiaodlg.h(23) : error C2146: syntax error : missing ';' before identifier 'm_myButton'
d:\study\11\pingbiao\pingbiaodlg.h(23) : error C2501: 'CMyButton' : missing storage-class or type specifiers
d:\study\11\pingbiao\pingbiaodlg.h(23) : error C2501: 'm_myButton' : missing storage-class or type specifiers
D:\study\11\PingBiao\PingBiaoDlg.cpp(77) : error C2065: 'm_myButton' : undeclared identifier
我没手工写任何代码,怎么会少了“;”???
亚非 2006-01-09
  • 打赏
  • 举报
回复
非常感谢,以前是用.Net环境的,一下用VC有点转不过来。都是基础性问题,见笑了!
handsomerun 2006-01-09
  • 打赏
  • 举报
回复
添加一个按钮
然后给这个button按钮用classwizard添加一个CButton型的成员变量

然后把CButton改成CButtonST

你就能享受派生类的新特性啦
不用工具箱的话,自己手工添加,需要注意一个问题,就是要用Aximp.exe来包装一下ocx控件的类,然后再程序中引用生成的dll就可以了。 aximp [options]{file.dll | file.ocx} The following command generates MediaPlayer.dll and AxMediaPlayer.dll for the Media Player control msdxm.ocx. aximp c:\systemroot\system32\msdxm.ocx 将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。 Windows 窗体只能承载 Windows 窗体控件,即从 Control 派生的类。Aximp.exe 生成可承载于 Windows 窗体上的 ActiveX 控件的包装类。这使您得以使用可应用于其他 Windows 窗体控件的同一设计时支持和编程方法论。若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装控件。此包装控件包含基础 ActiveX 控件的一个实例。它知道如何与 ActiveX 控件通信,但它显示为 Windows 窗体控件。这个生成的控件承载 ActiveX 控件并将其属性、方法和事件公开为生成控件的属性、方法和事件。 如果不包装一下直接用,会出现 灾难性 错误。上面已经说明了原因。 在项目中引用生成的ax开头的dll,在窗体代码中增加: 声明一个公有的控件对象: public AxISPICRECLib.AxISPICREC AxISPICREC; 在InitializeComponent()方法内初始化控件: AxISPICREC = new AxISPICRECLib.AxISPICREC();//必须new对象,否则窗体设计器出问题 ((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).BeginInit();//初始化开始 this.Controls.Add(this.AxISPICREC);//添加控件 ((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).EndInit(); this.AxISPICREC.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("AxISPICREC.OcxState")));//设计控件状态 如果遇到“正试图在 os 加载程序锁内执行托管代码”这个错误,请设置“调试”--“异常” "----"Managed Debugging Assistants"中勾掉"LoaderLock" 就可以了。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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