我自定义一个消息类型TMyMessage其中Wparam和Lparam的类型必须为DWORD吗?
定义成String行不行?

解决方案 »

  1.   

    Wparam和Lparam的类型必须为DWORD.
    其他类型不行,其他类型只能那个类型强制转换。
    但是类型强制转换后小心出问题(不一定出问题,但是可能出问题)
      

  2.   

    不行吧,widows消息机制基本类型限制,看看深入VCL这本书,大概我忘记了
      

  3.   

    因为有四个字节就足够了,它可以定义指针,指向任何类型的数据。
    wParam在16位的环境下是2个字节,本来是Word类型,因此用w做前缀
    lParam在16位的环境下是4个字节,本来是long类型,因此用l做前缀
    现在都是32位的环境了,所以两个参数都变成了四个字节,而因为习惯问题,这两个参数名没有变
    参数是Windows系统中定义好的结构中的数据,是约定的规范,因此不能改,但是你可以用PString类型来强转成lParam,因为它是指针,也是四个字节。