关于WM_GETTEXT消息

快乐汉子 2014-12-18 11:48:39
关于发送WM_GETTEXT消息,在MSDN里面的定义如下:
SendMessage(
(HWND) hWnd, // handle to destination window
WM_GETTEXT, // message to send
(WPARAM) wParam, // number of characters to copy
(LPARAM) lParam // text buffer
);
在孙鑫的教程里面是这样写的
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);

关于第四个参数 (LPARAM) lParam ,这个为什么要强制转换成(LPARAM),为什么第一个和第三个参数就不需要呢? 小白的问题,多谢大神帮忙解答
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-12-19
  • 打赏
  • 举报
回复
只要 编译器不报错,并且观察生成的对应汇编中实现的隐式转换正如你所愿 就 不用转换。
  • 打赏
  • 举报
回复
这是C++的基础问题,函数调用的时候如果参数类型不匹配,自然就该转的转。匹配的就不用转了
信阳毛尖 2014-12-19
  • 打赏
  • 举报
回复
msdn是这么说的吧: LRESULT WINAPI SendMessage( _In_ HWND hWnd, _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam ); 第一个参数就是窗口句柄,GetDlgItem(IDC_EDIT1)->m_hWnd就是IDC_EDIT1的窗口句柄,何需转换? 第三个参数是WPARAM类型 typedef unsigned int UINT_PTR typedef UINT_PTR WPARAM; 也就说WPARAM就是一个unsigned int,你直接传10进去,默认就会进行隐式转化的。当然,你使用(WPARAM)10这样显示转化显得更合理专业一些
笨笨仔 2014-12-19
  • 打赏
  • 举报
回复
看清楚了,第3个代入的是一个值“10”,当然不需要转换,第4个是个变量,而变量被定义成char,当作实参时当然要进行强制类型转换。
SiGoYi 2014-12-19
  • 打赏
  • 举报
回复
一般来说都会自动转换,不过我建议最好强制转换。包括第三个参数10也是,前面可以强转。

16,467

社区成员

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

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

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