真郁闷!1如果得到Frame框架上面的Edit控件的句柄?

NetCells 2006-01-14 10:39:57
今天拿到一个程序,要求得到程序中的指定的Edit句柄。
本以为非常简单(实质上也是绝大多数情况下碰到的都简单),用FindWindow()与FindWindowEx()不就得了吗。

但是这次,以前对所见过的大多数程序有效的代码都不起作用了。

用spy++看了一下,但每一个菜单就调出一个页面,命名是这样:Frame1,Frame2,Frame3,……
所要求找到的句柄就在这些页面框架上。

再搜索了一下,依据结果估计:这程序应该是用delphi写的吧。

反正结果是:我以前用VC所写出来的程序,都能用FindWindow()与FindWindowEx()轻松搞定。
      而对这些Frame上的Edit编辑框,我原来的那些代码都不起作用,得不到句柄。

请各位老大帮帮忙,小弟实在是才疏学浅。

谢谢
...全文
124 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
NetCells 2006-01-15
  • 打赏
  • 举报
回复
忘记说了,不是IE或CHtmlView之类,因为直接可以用spy看得到那些子控件的句柄的,而与IE有关的或与CWebBrowser有关的,是不能直接用spy来看得到的。

而且从软件的使用上也知道不可能与IE有关。
而更加像是VB或Delphi的那种写应用程序时所用的Frame,

我查了一下网上的资料,
也曾经有人问过这个问题,只是都没有答案。
蒋晟 2006-01-15
  • 打赏
  • 举报
回复
搞了半天,是什么软件里面的Frame都没有说
菜牛 2006-01-15
  • 打赏
  • 举报
回复
如果SPY++都可以看到,那就应该有ID了吧。
herman~~ 2006-01-15
  • 打赏
  • 举报
回复
看不懂,帮顶
goodboyws 2006-01-14
  • 打赏
  • 举报
回复
Frame上的EDIT不是窗口,没有句柄,你可以叫它某种对象,或者干脆理解成直接画在IE上的,总之绝对不是窗口,没有句柄。
如果要访问的话可以参考
http://community.csdn.net/Expert/topic/4345/4345922.xml?temp=.8634149
http://community.csdn.net/Expert/topic/4386/4386104.xml?temp=.6712915
NetCells 2006-01-14
  • 打赏
  • 举报
回复
所以,问题就归结为:如何得到Frame上的子控件(或说子窗口)的句柄了。

请大侠们指点。
baggio1984 2006-01-14
  • 打赏
  • 举报
回复
不会,学习ing
NetCells 2006-01-14
  • 打赏
  • 举报
回复
当然也可能是vb写的,好像vb也有frame的
但是肯定不是VC#写的。
NetCells 2006-01-14
  • 打赏
  • 举报
回复
难道delphi的程序就不一样啦
(当然,我不知道是哪种语言写出来的,只是猜测为delphi)
RINGSDK包含界面库和图象库。 本项目为编译环境为VC6,需要先安装platform sdk.不断修改中,会陆续上传其他相关文档及DEMO 设置: VC6菜单tools->Options,选择Directoris页,把include,lib目录加入到相应文件列表,如果要调试,需要把libsrc目录下的各个子目录加入到Source files文件列表中。 工程依赖几个第三方库,需要先编译livsrc\free_lib下几个目录的工程,然后打开ringsdk.dsw编译。工程都已经设置好了,编译即可。 由于VC的智能提示不能识别界面库里的宏,因此建议安装VA(Visual.Assist) 创建基于RingSDK的工程: 新建一个Win32 Application的工程,不要让VC写任何代码,空的工程。然后选择菜单Project->settings..., 选择C/C++页,Category选择Code Generation,然后在Use run-time library选择: DEBUG选择Debug Multithreaded RELEASE选择MultiThreaded 工程设置完毕,然后可以加入CPP和H文件了。 类库使用: 1、头文件: 头文件包含"ringmain.h"就可以,如果要使用图象库,还需要包含"ringdib.h" 2、窗口类声明: 窗口定义为如下格式: BEGIN_SETUPWINDOW(窗口名,窗口类型) BINNDID(对话框ID) //当窗口类型是对话框才需要写这个宏,且是可选的,即不写也可以 BEGIN_DEF_VAR(初始化标记) //这里定义类成员数据 END_DEF_VAR //这里定义类成员函数 //定义窗口消息处理函数 BEGIN_DEFMSG DEFMSG(消息代码) DEFMSGEX(自定义消息处理函数名) ... DEFCMD(命令处理函数名) ... DEFNOTIFY(通知消息代码) END_DEFMSG(窗口名) END_SETUPWINDOW(窗口名) 这里对上面代码中的中文进行说明: 窗口名:窗口名同时也是该窗口类的对象名,比如窗口名为MainWindow,则该窗口类名为RingWnd_MainWindow, 同时声明了RingWnd_MainWindow* MainWindow=NULL; 以后只要调用MainWindow = NewRingObj(MainWindow);然后MainWindow就可以使用了。 以上代码相当于: class RingWnd_MainWindow { ... } RingWnd_MainWindow* MainWindow=NULL; 类名可以用RINGCLASS(窗口名)宏来得到 窗口类型:为IS_WINDOW,IS_MDIFRAME,IS_MDICHILD,IS_DIALOG,IS_PROPPAGE,IS_PROPSHEET这几个值之一,一看名称就知道,不需要多讲了。 其实这个只是声明了窗口类是从哪个类继承。 初始化标记:为NEED_INIT和NO_INIT两个值之一,指定了是否需要成员数据的初始化,一般成员数据的初始化可以在WM_CREATE消息里完成, 如果需要事先初始化,可以指定NEED_INIT,但是需要在CPP文件实现一个INITWINDOW(窗口名)的函数,进行初始化。 这个BEGIN_DEF_VAR(初始化标记)和END_DEF_VAR是可选的,即可以不写这两个宏,一样可以声明成员数据或函数。 消息代码:窗口消息代码,例:WM_CREATE 自定义消息处理函数名:响应自定义消息的处理函数,这个可以随便取名,例:OnCustomMessage 命令处理函数名:响应菜单命令或控件命令的处理函数,这个可以随便取名,例:OnOpenFile,OnButton1Click 通知消息代码:控件的通知消息代码,例:LVN_SELECTCHANGE 对话框ID:当窗口类型是对话框才需要写这个宏,且是可选的,即不写也可以。写了这句,对话框创建时可以不写参数,例: BEGIN_SETUPWINDOW(DlgAbout,IS_DIALOG) BINDID(IDD_ABOUT) ...

16,551

社区成员

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

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

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