现急需一个控件提供给客户,要求将不分不公开属性和函数为不可见,经过搜索了解COM是一个优秀的解决方案,但本人不曾使用过,看技术文档似乎比较复杂,一时难以掌控,求各位帮忙,转换成源代码发到我E-Mail,成功则立刻结贴给分。谢谢!实现类可用MFC架构创建一基于Dialog对话框项目,然后创建一个控件类CMyButton,将该类封装成com则可,最好做个简单的调用demo,嘻嘻,估计对熟悉的朋友只需几分钟,客户急。可参考以下类:class CMyButton : public CButton
{
public:
CMyButton();
virtual ~CMyButton();// Operations
public:
void SetWidth(void); //接口1
void SetHidth(void); //接口2
void SetBkColor(void); //接口3//以下属性在com接口中不可见
// Implementation
protected:
void MyDraw(void);
void Resize(void);// Attributes
protected:
int m_clrBack;
int m_nWidth;
int m_nHight; DECLARE_MESSAGE_MAP()
};
封装成的COM接口只有上述3个接口,其他操作和属性皆不可见,谢谢!E-mail: [email protected]发送例程代码同时也可以在本贴回复,我好帮忙理解或者知晓。无所为报,分不够可开贴再续
{
public:
CMyButton();
virtual ~CMyButton();// Operations
public:
void SetWidth(void); //接口1
void SetHidth(void); //接口2
void SetBkColor(void); //接口3//以下属性在com接口中不可见
// Implementation
protected:
void MyDraw(void);
void Resize(void);// Attributes
protected:
int m_clrBack;
int m_nWidth;
int m_nHight; DECLARE_MESSAGE_MAP()
};
封装成的COM接口只有上述3个接口,其他操作和属性皆不可见,谢谢!E-mail: [email protected]发送例程代码同时也可以在本贴回复,我好帮忙理解或者知晓。无所为报,分不够可开贴再续
1.在codeproject上找一篇com的文章
照着改。
2.生成的com控件注册到注册表。
3.应用程序包含com的头文件。
然后在其项目中使用。
这段时间头痛得厉害,连看屏幕都是争取时间看完,打完字,然后就离开,其他时间先用笔草图规划好,伤身体了。艾。。但是业务又急,帮个忙,不胜感激!
我就做了视频控件,直接嵌入到dialog里的
不需要包含com的头文件。
在工程里插入activex控件时,ide会生成wrapper class
反正自己看着办吧。
反正自己看着办吧。
-------------------------
没有做过COM经验,不知道是否属实,如若如此,那如何处理?有没有人指教一下?
// 可公开的头文件
class AFX_EXT_CLASS CMyButton : public CButton
{
public:
CMyButton();
virtual ~CMyButton();// Operations
public:
void SetWidth(void); //接口1
void SetHidth(void); //接口2
void SetBkColor(void); //接口3 DECLARE_MESSAGE_MAP()
};// CPP文件
// 全局变量和全局函数会被隐藏
int m_clrBack;
int m_nWidth;
int m_nHight;
void MyDraw(CMyButton* pThis) { /* your code is here. */ }
void Resize(CMyButton* pThis) { /* your code is here. */ }void CMyButton::SetWidth() { ... }
void CMyButton::SetHeight() { ... }
void CMyButton::SetBkColor() { ... }com实现:让7楼的教你吧
建议提供几个api,做成dll,
用户只要知道几个api就行了,具体的CButton用户就不必知道了,
/**** api.h ******/
SetWidth();
......
/*end *****//*api.c*/
class CMyButton : public CButton
{
...........
};
void SetWidth()
{
CMyButton::SetWidth();
}不知道这样行不。
windows上有很多现有的activex组件,弄几个出来,试试效果,对决策有帮助的
又有点倡狂的看资料, 希望能持续一阵子 ^_*
照着教程做,一个下午就会熟悉比较简单的activex控件
activex可以由com实现,而且activex本身是一个控件
普通DLL已经足够