为什么创建的MFC ACTIVEX控件界面无法显示?

god_xp 2008-09-18 04:09:26
我用VC6.0 的MFC ACTIVEX创建向导创建了一个控件,编辑成功了,放到其它应用程序使用,发现是个巨形,中间带个椭圆,后来看到有以下代码:
pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
pdc->Ellipse(rcBounds);
将其注释掉,并在PAPPPAGE的Dialog中放置了EditBox等控件,经再次编译后,没有椭圆了,但也没有看到我的Dialog出现?不知道这是什么原因,请大家帮忙。
...全文
662 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
天冰天降 2011-11-16
  • 打赏
  • 举报
回复
核心是有没有简单的办法显示button,edit,picture,好歹也有一个界面呀
god_xp 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 Enigma_CN 的回复:]
CDialog cDemoPpg; 这个要定义在类间 就是头文件里面

在creat之后 cDemoPpg.ShowWindow(SW_SHOW);

在Onsize函数里面设置,对话框和控件一样大

OnSize(UINT nType, int cx, int cy)函数里面
cDemoPpg.MoveWindow(CRect(0,0,cx,cy),false);
[/Quote]
感谢你,我真的是没有显示窗口,感激之情无以表达,送分咯
god_xp 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jameshooo 的回复:]
不要把cDemoPpg设置为局部变量,OnCreate一退出对话框也会被销毁,应该把cDemoPpg设置成类的成员变量:
class CDemoCtrl : ...
{
public:
CxxDialog cDemoPpg;
......
};

int CDemoCtrl::OnCreate(...)
{
if (cDemoPpg.Create(...) == -1)
return -1;
......
}
[/Quote]
还是不行,显示不出窗口
Occam's_Razor 2008-09-19
  • 打赏
  • 举报
回复
CDialog cDemoPpg; 这个要定义在类间 就是头文件里面

在creat之后 cDemoPpg.ShowWindow(SW_SHOW);

在Onsize函数里面设置,对话框和控件一样大

OnSize(UINT nType, int cx, int cy)函数里面
cDemoPpg.MoveWindow(CRect(0,0,cx,cy),false);





jameshooo 2008-09-19
  • 打赏
  • 举报
回复
不要把cDemoPpg设置为局部变量,OnCreate一退出对话框也会被销毁,应该把cDemoPpg设置成类的成员变量:
class CDemoCtrl : ...
{
public:
CxxDialog cDemoPpg;
......
};

int CDemoCtrl::OnCreate(...)
{
if (cDemoPpg.Create(...) == -1)
return -1;
......
}
god_xp 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wangweixing2000 的回复:]
感觉问题不在你的控件,在于你PAPPPAGE的Dialog的属性没有设置好,设置style为child,System menu为false,
Title bar为false,你再试试看:)
[/Quote]
我确认已设置style为child,System menu我没找到?请帮忙看看我的代码是不是有问题?
int CDemoCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{

CDialog cDemoPpg;
//IDD_PROPPAGE_DEMO为想要显示的窗口ID
if(cDemoPpg.Create(IDD_PROPPAGE_DEMO,this)==-1)
return -1;
return 0;
}
执行的结果是:还是没有把窗口显示出来。
wangweixing2000 2008-09-18
  • 打赏
  • 举报
回复
感觉问题不在你的控件,在于你PAPPPAGE的Dialog的属性没有设置好,设置style为child,System menu为false,
Title bar为false,你再试试看:)
god_xp 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Enigma_CN 的回复:]
可以在控件里动态创建一个对话框的窗口(设置该窗口为控件的子窗口)
这时候就能拖拽其它控件在这个Dlg上面了
[/Quote]
恩,关键是怎么显示,能给点代码吗?
Occam's_Razor 2008-09-18
  • 打赏
  • 举报
回复
可以在控件里动态创建一个对话框的窗口(设置该窗口为控件的子窗口)
这时候就能拖拽其它控件在这个Dlg上面了
god_xp 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhoujianhei 的回复:]
VC的ACTIVX跟VB的大有不同,需要自己画或动态创建其它窗体/控件。
[/Quote]
难道真的不能采用拖拽的方式吗?太麻烦了吧?唉
god_xp 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Enigma_CN 的回复:]
定义在类间。。
PS:楼主是别的程序员转vc开发的?
[/Quote]
恩,你说对了
Occam's_Razor 2008-09-18
  • 打赏
  • 举报
回复
定义在类间。。
PS:楼主是别的程序员转vc开发的?
zhoujianhei 2008-09-18
  • 打赏
  • 举报
回复
VC的ACTIVX跟VB的大有不同,需要自己画或动态创建其它窗体/控件。

god_xp 2008-09-18
  • 打赏
  • 举报
回复
我看到方法:如下:
在MFC ActiveX ContorlWizard创建工程的OnCreate函数中添加
if(m_dlg.Create(IDD_DIALOG1,this)==-1)
return -1;
m_dlg为对话框窗体类

请问m_dlg变量应该在哪定义,如何定义?
god_xp 2008-09-18
  • 打赏
  • 举报
回复
控件界面是直接利用MFC ACTIVX创建向导创建出来的“PAPPPAGE”界面直接在上面添加,修改的
Occam's_Razor 2008-09-18
  • 打赏
  • 举报
回复
控件界面怎么创建的?
将对应的对话框在 CXXXCtrl 里面动态生成
在afx_msg void OnSize(UINT nType, int cx, int cy);里面设置子窗口的大小
god_xp 2008-09-18
  • 打赏
  • 举报
回复
谢谢你的回复,请问,我创建好了自己的控件页面,应该如何显示出来呢?
Occam's_Razor 2008-09-18
  • 打赏
  • 举报
回复
Dialog 是设置控件属性的。。。。。
不是控件主界面

3,245

社区成员

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

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