选择夹如何将DLL的窗口加载进子夹呢?
我在DLL里面写主要功能,用主程序加载,可以类似多功能插件的效果,但是我现在加载不了选择夹的子夹里面,劳烦大师帮忙看看主窗口的代码
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序
类 启动类 <公开 基础类 = 窗口程序类>
{
变量 主窗口对象 <类型 = 我的主窗口>
方法 启动方法 <公开 类型 = 整数>
{
主窗口对象.创建主窗口 ()
返回 (1)
}
}
# ===
类 dll加载 <公开 @全局类 = 真>
{
方法 载入窗口 <公开 静态 类型 = 变整数 返回值注释 = "返回创建成功的窗口句柄,失败返回0" @输出名 = "zrck" @视窗.输入 = "mfc_DLL.dll">
参数 "//父窗口句柄" <类型 = 变整数>
{
}
方法 窗口置父 <公开 静态 类型 = 变整数 @视窗.输入 = "user32" @输出名 = "SetParent">
参数 hWndChild <类型 = 变整数 注释 = " 子窗口句柄,">
参数 hWndNewParent <类型 = 变整数 注释 = " 父窗口句柄,">
#
}
类 我的主窗口 <基础类 = 窗口 注释 = "样例主窗口" @视窗.布局 = "client_size = \"593, 578\"" 标题 = "我的主窗口" @视窗.附属文件 = "mfc_DLL.dll">
{
变量 标签1 <类型 = 标签 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 101\r\npos = \"21, 14, 384, 32\"" 标题 = "标签1">
变量 选择夹1 <类型 = 选择夹 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 102\r\npos = \"13, 54, 560, 512\"" 标题 = "选择夹1">
变量 父窗口 <类型 = 窗口容器组件>
变量 按钮1 <类型 = 按钮 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 104\r\npos = \"445, 14, 120, 32\"" 标题 = "载入DLL窗口">
方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "当按钮被单击后发送此事件">
参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
如果 (来源对象 == 按钮1)
{
选择夹1.添加子夹 ("DLL窗口", 0, 空子夹, )
选择夹1.取子夹内容组件 (0, 父窗口)
变量 子窗口句柄 <类型 = 变整数>
子窗口句柄 = 载入窗口 ()
标签1.标题="DLL窗口句柄:"+到文本(子窗口句柄)
// 窗口置父 (子窗口句柄, 父窗口.取窗口句柄 ())
}
返回 (0)
}
}
类 空子夹 <基础类 = 组件布局器 隐藏值属性 = "0" @视窗.布局 = "client_size = \"353, 290\"">
{
#
}
DLL的代码
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序
类 启动类 <公开 基础类 = 动态库程序类>
{
变量 主窗口 <类型 = DLL窗口>
方法 启动方法 <公开 类型 = 整数 折叠>
{
返回 (1)
}
方法 _调试入口方法 <公开 注释 = "当使用火山DLL默认调试启动程序直接调试DLL时,本方法将在DLL加载后被自动调用." 注释 = "请将调试相关的代码置入本方法中,在编译DLL的发布版本时,本方法中的内容不会被加入." 折叠 折叠2>
{
}
方法 载入窗口 <公开 静态 类型 = 变整数 注释 = "一个输出方法模板" @输出名 = "zrck" @视窗.输出 = 真>
参数 "//父窗口句柄" <类型 = 变整数>
{
// 取程序 ().主窗口.创建子窗口 (读指针处对象 (父窗口句柄, 窗口), , , , , )
如果 (取程序 ().主窗口.创建窗口 (, , , , ) == 真)
{
返回 (取程序 ().主窗口.取窗口句柄 ())
}
否则
{
返回 (0)
}
返回 (0)
}
}
类 DLL窗口 <基础类 = 窗口 折叠 隐藏值属性 = "0" @视窗.布局 = "client_size = \"495, 308\"" 窗口边框 = 无边框>
{
变量 分组框1 <类型 = 分组框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 101\r\npos = \"16, 128, 456, 160\"" 标题 = "分组框1">
变量 颜色选择器1 <类型 = 颜色选择器 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 102\r\nparent_id = 101\r\npos = \"32, 112, 216, 24\"" 标题 = "颜色选择器1">
变量 日期框1 <类型 = 日期框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 103\r\nparent_id = 101\r\npos = \"232, 64, 208, 24\"" 标题 = "日期框1">
变量 进度条1 <类型 = 进度条 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 104\r\nparent_id = 101\r\npos = \"224, 24, 216, 24\"" 标题 = "进度条1" 位置 = 50>
变量 按钮2 <类型 = 按钮 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 105\r\nparent_id = 101\r\npos = \"360, 104, 80, 32\"" 标题 = "按钮2">
变量 选择框2 <类型 = 选择框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 106\r\nparent_id = 101\r\npos = \"144, 64, 80, 24\"" 标题 = "选择框2">
变量 选择框1 <类型 = 选择框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 107\r\nparent_id = 101\r\npos = \"32, 64, 80, 24\"" 标题 = "选择框1">
变量 单选框2 <类型 = 单选框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 108\r\nparent_id = 101\r\npos = \"136, 24, 80, 24\"" 标题 = "单选框2">
变量 单选框1 <类型 = 单选框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 109\r\nparent_id = 101\r\npos = \"24, 24, 80, 24\"" 标题 = "单选框1">
变量 按钮1 <类型 = 按钮 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 110\r\npos = \"384, 76, 80, 32\"" 标题 = "按钮1">
变量 编辑框1 <类型 = 编辑框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 111\r\npos = \"16, 80, 360, 24\"" 标题 = "编辑框1">
变量 标签1 <类型 = 标签 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 112\r\npos = \"16, 24, 456, 40\"" 标题 = "这是DLL的窗口,我要动态加载到选择夹"
字体 = ", 14, 1, 0, 0, 0, 0" 横向对齐方式 = 居中>
#
方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "当按钮被单击后发送此事件">
参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
如果 (来源对象 == 按钮1)
{
编辑框1.内容 = "我是插件的DLL里面的窗口哦"
信息框 ("dll插件加载完成")
}
否则 (来源对象 == 按钮2)
{
选择框1.选中 = 取反 (选择框1.选中)
选择框2.选中 = 取反 (选择框2.选中)
}
返回 (0)
}
}
麻烦了
需要用 嵌入窗口 将dll的窗口嵌入到选择夹中去,,,因为dll实际是外部窗口....可以试试 dengzf 发表于 2026-8-16 18:39
需要用 嵌入窗口 将dll的窗口嵌入到选择夹中去,,,因为dll实际是外部窗口....可以试试 ...
// 窗口置父 (子窗口句柄, 父窗口.取窗口句柄 ())
我有这段代码都屏蔽了又,还是不行 guangye1 发表于 2026-8-16 18:51
// 窗口置父 (子窗口句柄, 父窗口.取窗口句柄 ())
我有这段代码都屏蔽了又,还是不行 ...
<volprg type = "normal" version = 1 />
method 按钮_被单击 <receiver type = 整数 explain = "当按钮被单击后发送此事件">
param 来源对象 <type = 按钮 explain = "提供事件产生的具体来源对象">
param 标记值 <type = 整数 explain = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
如果 (来源对象 == 按钮1)
{
如果 (子窗口句柄 <= 0)
{
选择夹1.添加子夹 ("DLL窗口", 0, 空子夹, )
选择夹1.取子夹内容组件 (0, 父窗口)
子窗口句柄 = 载入窗口 ()
标签1.标题 = "DLL窗口句柄:" + 到文本 (子窗口句柄)
嵌入窗口4_ (父窗口.取窗口句柄 (), 子窗口句柄)
}
}
返回 (0)
}
学习学习
页:
[1]