当前位置:编程学习 > VB >>

sendmessage的一个问题

刚接触API,发现很多API函数的参数都是常量,最近用到sendmessage,所以想了解下这些常量的定义和从哪里能查得到
就sendmessage这个函数问两个问题,恳求帮我解答下.谢谢

1.sendmessage这个函数的MSG参数对应的消息的常量哪里能够查得到?

2.最近看个源码中有Public Const WM_USER = &H400,我百度了下之后知道设置是私有消息的起点,
然后有Public Const TB_SETSTYLE = WM_USER + 56 
我想知道TB_SETSTYLE 这个是什么规则命名的?如果改成BB_ETSTYLE可不可以?而且既然是私有的消息,VB怎么知道这个消息是代表的是什么呢?? --------------------编程问答-------------------- 因为世界杯的关系,,,先去躺一会,,2点半起来....^_^ --------------------编程问答-------------------- 名称只是一个代号,其实主要就是那些MS定义的数值量 --------------------编程问答-------------------- 那个数值量哪里能找到啊? --------------------编程问答-------------------- VB6带API阅览器,在常量里查WM_开头的。 --------------------编程问答-------------------- VC的那些.h头文件里有,翻译过来吧,如winbase.h里的 --------------------编程问答-------------------- 到网上去下载一个:API Viewer 2004 
这个API浏览器很全面。
所有的常量都在里面了。其实,这些常量都是从C++的头文件翻译过来的。 --------------------编程问答-------------------- 这个是一个比较好的软件,适合于学习API编程和参阅API资料:
http://download.csdn.net/source/1441577 --------------------编程问答-------------------- 建议去MSDN去看吧、那里应该是最全的吧?(还有比Microsoft自己写的更详细的地方?!)
基本所有的东西都有C++的例子、部分东西有VS里所有语言的例子 --------------------编程问答-------------------- 百度搜啊 --------------------编程问答-------------------- 应该这么问.比如我想发送一个点击窗体按钮的消息,而我不知道那个代表点击按钮的MSG常量是什么的时候,我应该怎么办?0.0 --------------------编程问答-------------------- Windows消息有好几百个,但常用的消息你要记住:
Windows消息大全
http://dev.csdn.net/htmls/81/81332.html --------------------编程问答-------------------- 很感谢CHENJLL031,我就是想找这个,能不能帮我解释下我的第二个问题呢?
或者我表达得不清楚,我举个例子,
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_USER As Long = &H400

Private Const EM_SETTARGETDEVICE = (WM_USER + 72)

    '允许使用RichTextBox的横向滚动条
    Call SendMessage(RichTextBox1.hwnd, EM_SETTARGETDEVICE, 0, 1)

在这个例子里面.EM_SETTARGETDEVICE这个消息是私有的,那EM_SETTARGETDEVICE能不能改成WM_SETTARGETDEVICE或者ET_SETTARGETDEVICE?(WM_USER + 72)可不可以改成+60或者+100?
这里面有什么要求没有?而且既然是私有的.那Call SendMessage(RichTextBox1.hwnd, EM_SETTARGETDEVICE, 0, 1)为什么程序知道这个消息是使用横向滚动条呢? --------------------编程问答-------------------- 你应该先明确一个概念,发送消息之后,处理消息的不是你正在编写的程序,是接受消息的控件
所以不是程序知道这个消息的意思是什么,而是接受消息的控件接受消息并处理

消息实际上只是一个数值,所以与取名无关,EM_SETTARGETDEVICE 当然可以改成 WM_SETTARGETDEVICE 或者 ET_SETTARGETDEVICE 甚至改成 WM_MICROSOFT_IS_A_BITCH

接受消息的控件规定了WM_USER+72的意思代表横向滚动条,RichTextBox接受到这个数字,就认为是横向滚动条这个消息,接受到+60或者+100就代表不同的意思 --------------------编程问答-------------------- 那我去哪里找到横向滚动条这个操作所代表的数值是+72呢?
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,