关于将文件嵌入到自身程序的问题.高手走过路过进来看看!.

wsjay 2006-06-17 06:08:46
我实现了把一个记事本嵌入到自己的程序里面.
Dim Handle As Long, Ret As Long
Handle = FindWindow("NOTEPAD", vbNullString)
Ret = SetWindowLong(Handle, GWL_STYLE, WS_VISIBLE Or WS_CLIPSIBLINGS)
SetParent Handle, Me.hwnd
MoveWindow Handle, 1, 1, 806, 632, 0
API声明就不写了.
其中上面一段是将文件挂到程序后的坐标处
MoveWindow Handle, 1, 1, 806, 632, 0也就是将文件置到我的程序的左上角
------------------------
但是因为某中原因.嵌入的文件位置变了.也就是说坐标不是我设置的地方了.还有2影.就是看起来像2个记事本一样.我试过将MoveWindow Handle, 1, 1, 806, 632, 0放到timer里来时时检测文件的位置.但是发现FindWindow返回的值都是0.也就是取不到当前的文件进程
有没有什么方法解决呢?
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
VirtualDesktop 2006-06-18
  • 打赏
  • 举报
回复
"这让我想起以前看的一个VB的说明,说VB窗口不是顶级窗口,而是运行在一个VB指定的父里面,所以FINDWINDOW是找不到的。联想而已。。。。。接着说正事"

是的,vb程序窗口的父叫做ThunderMain
清晨曦月 2006-06-18
  • 打赏
  • 举报
回复
哦天呢。呵呵。老兄记性真好
PANBing 2006-06-17
  • 打赏
  • 举报
回复
没试过,帮顶.
清晨曦月 2006-06-17
  • 打赏
  • 举报
回复
以下讨论中不考虑所有窗体都是桌面子窗体问题,因为一般编程都不涉及麻,楼主的例子也是。

丫,SetParent 是什么意思呢,换个新父,既然有了父,他就是子,FINDWINDOW是干什么呢,查找顶级窗体,那当然找不到了,换FINDWINDOWEX,就可以了。
这让我想起以前看的一个VB的说明,说VB窗口不是顶级窗口,而是运行在一个VB指定的父里面,所以FINDWINDOW是找不到的。联想而已。。。。。接着说正事

两个影子,你没提供源代码无从测试了。。。试着调用FRM的刷新方法。

另外如果是我写你的程序,会这样:
1、把MOVEWINDOW调用放在SETPARENT前面
2、把其他程序的窗口捕获到PICBOX里面


1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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