有关SendMessage函数中的参数转换
LRESULT SendMessage(
HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);HWND hWnd = ...
CString sz = "My String";
使用SendMessage(hWnd, WM_SETTEXT, 0, (WPARAM)(LPCSTR)sz)时可以正确显示sz中的文字。
但我使用SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)&sz)的时候,现实的却是乱吗?为什么啊?
LRESULT SendMessage(
HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);HWND hWnd = ...
CString sz = "My String";
使用SendMessage(hWnd, WM_SETTEXT, 0, (WPARAM)(LPCSTR)sz)时可以正确显示sz中的文字。
但我使用SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)&sz)的时候,现实的却是乱吗?为什么啊?
&sz
一样吗?
TRACE("%s", sz);
TRACE("%s", &sz);
看是不适合你显示的乱码一样
&str 取的是字符串变量的首地址.
看看mfc中的带码你就明白了!!!
LPCTSTR 是CString的一个操作符,作用是取得字符串的首地址.
我主要是想问这个问题!
SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)&sz)是可以的.但可惜地是接受你消息的控件是MS写的,MS认为你送来的LAPRAM是个地址,而且是个字符串的首地址,十分遗憾地是你送过去的是一个CString型变量的地址,于是"轰隆"一声你掉到地下了.