递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 3063|回复: 1
打印 上一主题 下一主题

[视窗] 【解决方案】关于DLL动态库闪现窗口的错误问题。

[复制链接]

111

主题

608

帖子

2148

积分

金牌会员

Rank: 6Rank: 6

积分
2148
QQ
跳转到指定楼层
楼主
发表于 2023-6-4 04:26:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
总结应该是  窗口程序类 代码问题。
他根本就没执行消息循环处理。
而且,如果他执行了  也会卡主当dllmain不能返回。
我见有人以线程方式 执行 创建对话框,方式阻止窗口闪现。
实际上问题多多。
反思问题本质,就是没有执行消息循环,导致启动的线程自动释放而已。
而且,DLL使用线程创建窗口,可能会存在一些未知的错误。导致闪退或者崩溃。故:需要先在主线程创建一次窗口

下面是具体实现代码,请指教了。



  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 包 火山.程序

  3. 类 启动类 <公开 基础类 = 动态库程序类 折叠>
  4. {
  5.     方法 启动方法 <公开 类型 = 整数>
  6.     {
  7.         all.init ()
  8.         返回 (1)
  9.     }
  10. }

  11. 类 all <公开 折叠>
  12. {
  13.     变量 myWin <公开 静态 类型 = myWin>

  14.     方法 init <公开 静态>
  15.     {
  16.         wininit ()
  17.         启动线程 (线程模板1, , , , )

  18.     }

  19.     方法 wininit <公开 静态 折叠>
  20.     {
  21.         变量 win <类型 = 变整数>
  22.         win = 创建对象指针 (窗口)
  23.         读指针处对象 (win, 窗口).创建窗口 ()
  24.         销毁对象指针 (win)
  25.     }

  26.     方法 线程模板1 <静态 类型 = 整数 注释 = "提供线程执行函数的模板方法" 返回值注释 = "返回值未被使用">
  27.     参数 用户参数 <类型 = 变整数 注释 = "为启动线程线程时所提供的用户参数值">
  28.     {
  29.         all.myWin.创建窗口 (, , , , )
  30.         消息循环 ()
  31.         返回 (0)
  32.     }

  33.     方法 消息循环 <公开 静态 折叠>
  34.     {
  35.         @ MSG msg;
  36.         @ while (GetMessage (&msg, NULL , 0, 0))
  37.         @ {
  38.         @   TranslateMessage (&msg);
  39.         @   DispatchMessage (&msg);
  40.         @ }
  41.     }

  42.     #  
  43. }

  44. 类 myWin <基础类 = 窗口 折叠 折叠2 隐藏值属性 = "0" @视窗.布局 = "client_size = "290, 119"" 标题 = "test">
  45. {

  46.     #
  47. }
复制代码


ps:天天在论坛哔哔 被人嫌弃,哎。。。



专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

111

主题

608

帖子

2148

积分

金牌会员

Rank: 6Rank: 6

积分
2148
QQ
沙发
 楼主| 发表于 2023-6-4 04:30:36 | 只看该作者
ps:

不要在DLL 所有创建的窗口内预设 底图 等非基础操作。
会闪退或报错,之前给3D摄像机写插件的时候发现的。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-14 11:08 , Processed in 0.086147 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表