怎样将简单的MFC对话框在ocx中显示? 并使对话框作为ocx的形状,随ocx的大小变化而变化是在OnDraw中做吗,怎么做呢?在线等!!!!!!!!答者有分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将对话框当作子窗口放进OCX中,在WM_SIZE里面根据OCX窗口大小调整对话框大小 如果是开发ocx,可以这样:假设ocx的名称为SMC_NTM,使用MFC创建CSMC_NTMCtrl::CSMC_NTMCtrl(){ InitializeIIDs(&IID_DSMC_NTM, &IID_DSMC_NTMEvents); EnableSimpleFrame(); // TODO: 在此初始化控件的实例数据。}void CSMC_NTMCtrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){ if (!pdc) return; // TODO: 用您自己的绘图代码替换下面的代码。 //pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); //pdc->Ellipse(rcBounds); m_TheOCXDialog->MoveWindow(rcBounds,TRUE);//对话框显示}// CSMC_NTMCtrl 消息处理程序//初始化对话框int CSMC_NTMCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 m_TheOCXDialog=new COCXDialog(); m_TheOCXDialog->Create(IDD_DIALOG_OCX,this); m_TheOCXDialog->ShowWindow(SW_SHOW); return 0;}//调整对话框大小void CSMC_NTMCtrl::OnSize(UINT nType, int cx, int cy){ COleControl::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码 CRect rectTmp; this->GetClientRect(rectTmp); m_TheOCXDialog->MoveWindow(rectTmp,TRUE);} ocx自带有窗口,你可以在这窗口里面create你想使用的大多数控件,何必往ocx中放对话框呢? 1, 在“资源“视图中,右键”对话框“,选择”插入对话框“来创建一个默认的对话框。2, 删除默认产生的“确定“和”取消“按钮,调整对话框大小为230*40。3,更改对话框ID为IDD_MAINDIALOG,并修改对话框属性:Border—none, Style – Child, System Menu – False, Visible – True.(这几个属性很重要,否则对话框可能不能显示)5,为对话框创建一个类,名为CMainDialog, 现在我们为类增加成员变量:1,为CMyActiveXCtrl类增加一个变量m_MainDialog,类型为CMainDialog增加支持代码1,为CMyActiveXCtrl处理WM_CREATE事件的代码,在其中加入:m_MainDialog.Create(IDD_MAINDIALOG, this);并在OnDraw函数中加入:m_MainDialog.MoveWindow(rcBounds, TRUE); //对话框显示 可以 添加 对话框 资源 到 项目中 ,然后 生成一个 对话框类来 控制,在 控件 头文件 中 定义 该对话框变量: dlg1在 控件实现文件 中的 OnCreate 事件中 通过 dlg1.Create(IDD_DIALOG1,this);dlg1.ShowWindow(SW_SHOW);来生成并显示OK了 MFC 中Reveive的返回值不等于实际收到的值? 字符串转16进制数 请问如何判断麦克风是否正在录音??? 以后再也不倒分了! 怎样用程序模拟鼠标发送消息给系统,弹出桌面的右键快捷菜单!!!! 大家推荐一本计算机图形学的比较好的书吧? 在FormView中创建CToolBar不能正常显示的问题? 如何在 idl 中插入预处理 #define 定义 如何准确地移动光标(精确到象素)! ACCESS数据库方面! 看过<Windows核心编程>的大侠请进 (Help)手机如何访问WEB服务器?
假设ocx的名称为SMC_NTM,使用MFC创建
CSMC_NTMCtrl::CSMC_NTMCtrl()
{
InitializeIIDs(&IID_DSMC_NTM, &IID_DSMC_NTMEvents); EnableSimpleFrame();
// TODO: 在此初始化控件的实例数据。
}
void CSMC_NTMCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)
return; // TODO: 用您自己的绘图代码替换下面的代码。
//pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
//pdc->Ellipse(rcBounds);
m_TheOCXDialog->MoveWindow(rcBounds,TRUE);//对话框显示
}
// CSMC_NTMCtrl 消息处理程序
//初始化对话框
int CSMC_NTMCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
m_TheOCXDialog=new COCXDialog();
m_TheOCXDialog->Create(IDD_DIALOG_OCX,this);
m_TheOCXDialog->ShowWindow(SW_SHOW);
return 0;
}//调整对话框大小
void CSMC_NTMCtrl::OnSize(UINT nType, int cx, int cy)
{
COleControl::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码
CRect rectTmp;
this->GetClientRect(rectTmp);
m_TheOCXDialog->MoveWindow(rectTmp,TRUE);}
5,为对话框创建一个类,名为CMainDialog,
现在我们为类增加成员变量:1,为CMyActiveXCtrl类增加一个变量m_MainDialog,类型为CMainDialog
增加支持代码1,为CMyActiveXCtrl处理WM_CREATE事件的代码,在其中加入:m_MainDialog.Create(IDD_MAINDIALOG, this);并在OnDraw函数中加入:m_MainDialog.MoveWindow(rcBounds, TRUE); //对话框显示
在 控件实现文件 中的 OnCreate 事件中 通过 dlg1.Create(IDD_DIALOG1,this);dlg1.ShowWindow(SW_SHOW);来生成并显示OK了