关于windows消息知识的疑问,谢谢

woshiwangming002 2010-09-06 11:30:38
1、获得指定窗体的句柄
HWND hLoginWnd = ::FindWindow("TfrmLogin", "登录窗体");
(1)TfrmLogin:在bcb窗体设计中,就是name属性值(即类名),对吗?
(2)当要查找的窗体(可执行的exe程序),若不能看到源码,那如何得知该窗体的类名?
(3)FindWindow(窗口类名,窗口名)方法,对于c#,VB等程序适用吗?

2、查找子窗口
FindWindowEx(hLoginWnd, NULL, "TLabeledEdit", NULL)
(1)如何确定被查找窗体中控件(可否理解为子窗体?)的类型?即如何得知一个文本框就是TLabeledEdit类型?通过工具?

3、发送消息
::SendMessage(h1, WM_SETTEXT, 0, (LPARAM)edtUserPwd->Text.c_str());
(1)这句代码这样理解是否正确:edtUserPwd中的值赋给句柄h1所在的控件?
(2)查msdn,WM_SETTEXT的解释为:Sets the text of a window.翻译为:设置窗体的文本框?
(3)SendMessage参数中的 WPARAM wParam,LPARAM IParam(查msdn:指定附加的消息指定信息),两者有什么区别?

4、消息框
MessageBox(Handle, "错误!",__FUNC__, MB_OK | MB_ICONWARNING);
中的“__FUNC__”代表什么意思?

请多多指教,谢谢。
...全文
53 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2010-09-07
  • 打赏
  • 举报
回复
我习惯用命令行或查找窗口式的,但是必须要保证准确性。比如查找窗口的方法中,确保目标窗口的类名和标题名在系统中是比较特殊的,不会和其他的窗体混淆。还有可以窗体上加一些其他的控件(哪怕是隐藏的)作为标识,查找的时候,确保找到的是你想要的那个窗体。
woshiwangming002 2010-09-07
  • 打赏
  • 举报
回复
那你一般都用些什么方法呢?
ccrun.com 2010-09-07
  • 打赏
  • 举报
回复
其他的方法还有很多,比如通过COM机制。或者山寨一点的通过共享内存映射等等。不过相对复杂一些。
zzbinfo 2010-09-07
  • 打赏
  • 举报
回复
妖哥敬业得精神令人敬佩
woshiwangming002 2010-09-06
  • 打赏
  • 举报
回复
多谢妖哥的帮助,这么晚都还在论坛,真的专注和敬业。
另外,http://topic.csdn.net/u/20100906/09/6cfb7132-b7c6-4524-8fd1-4670c04c87b8.html帖子中,你提到了有多种方法,除了你列举的两种外,还有哪些呢?等你明天方便的时候,指导下,我想学习。多谢了。
ccrun.com 2010-09-06
  • 打赏
  • 举报
回复
1.(1). C++Builder窗体中,窗体的类就是T + 窗体名(Name),比如有个窗体(Form)的名字是Form1,那么这个窗体的类名就是TForm1
1.(2). 用Spy++工具查看
1.(3). FindWindow是API,在其他语言中可以调用。

2.(1) 还是用Spy++工具查看,或者自己枚举(EnumChildWindows)

3.(1). 这句柄是为句柄为h1的文本框赋值,内容就是edtUserPwd中的文本。
3.(2). 准确的说是设置窗口的文本(因为窗口和窗体是不一样的,窗体也是窗口,按钮或文本框也是窗口)
3.(3). 32位的系统中,WParam和LParam已没有什么区别,只需要注意顺序就行了,第一个是WParam,第二是LParam

4. __FUNC__是C++Builder内置的一个宏,代表当前函数的名字,只是我代码中一个使用习惯而已。你可以忽略之,用其他的字符串来代替。

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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