可以利用动态库来创建窗口吗???

FlyOverSea 2002-06-30 10:16:04
大概意思如下:
自己写一程序,名为abc.exe(Dialog型的),它调用了一个名为def.dll的动态库,目的是要在abc.exe的dialog上创建一个无边框的dialog(就像控件一样的),而完成创建的工作是在dll中做好的,然后有一个导出函数(例如叫myCreate),我是这样做动态库的:
///////.h
public:
Cabc a;


///////.cpp

void CdefApp::Start(CWnd*aa)
{
a.Create ( ID_A,aa);
}
其中Cabc是一个对话框类(自己建的),最后导出start,然后放在abc里面导入,运行

结果:程序崩了 :(
5~~~~~~~~~~~~~~~~~~~~~~~~~~
我哪里错了啊???
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
spidertan 2002-06-30
  • 打赏
  • 举报
回复
void CMy4422Dlg::OnOK()
{
HINSTANCE a=LoadLibrary("D:\\1234.dll");
dd=(aaa)GetProcAddress(a,"Start");
if (fRunTimeLinkSuccess = (ProcAdd != NULL))
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Cabc *a=new Cabc;
// a->Create ( ID_A ,aa);
a->Create (NULL,NULL,WS_VISIBLE|WS_CHILD,CRect (0,0,100,100),aa,ID_A,NULL);
}
dd(FromHandle(m_hWnd));
FreeLibrary(a);
FlyOverSea 2002-06-30
  • 打赏
  • 举报
回复
版主大哥的方法我用下来不错,程序不崩了,后来,我把freelibrary(a)那句去掉了,可还是老样子,我说的对话框闪了一下是说abc的对话框闪了一下,而不是指def所create的对话框闪了一下,还碰到一个问题,我在def中这样create的时候出错了
void CdefApp::Start(CWnd*aa)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Cabc *a=new Cabc;
// a->Create ( ID_A ,aa);
a->Create (NULL,NULL,WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),aa,ID_A,NULL);
}

错误的是create的那一句:
error C2661: 'Create' : no overloaded function takes 7 parameters
FlyOverSea 2002-06-30
  • 打赏
  • 举报
回复
我改好了,然后在abc的程序里面是这样写的:
void CMy4422Dlg::OnOK()
{
HINSTANCE a=LoadLibrary("D:\\1234.dll");
dd=(aaa)GetProcAddress(a,"Start");
dd(FromHandle(m_hWnd));
FreeLibrary(a);

然后对话框闪了一下,就什么都没有了,另,在def中,那个dialog我把他style 设为child,border设为none,并且把“Visible”给勾上了
neosu 2002-06-30
  • 打赏
  • 举报
回复
masterz
说的没错。

masterz 2002-06-30
  • 打赏
  • 举报
回复
try this:
static void CdefApp::Start(CWnd*aa)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Cabc* a=new Cabc;
a->Create ( ID_A,aa);
}

16,471

社区成员

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

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

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