[3626]
Re: メモ:LVITEM
もか
ListView_InsertItem/LVM_INSERTITEMは、const LV_ITEM FAR*とはなっているけど、constになるのはポインタ値(const TCHAR* const)で、定義上は中身をWin側で書き換える可能性ありってことですね。
Win32APIは、IN/OUTやconst/非constに関していいかげんすぎだよなあ。
VC6 Proに付属しているMFCのソース(初めて見た...)に、
int CListCtrl::InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask,
int nImage, LPARAM lParam)
LVITEM item;
...
item.pszText = (LPTSTR)lpszItem;
という物があります。もっとも、MFCもたいして当てにならないようで....
気持ち悪いけど、まあ、いいにしましょう。
#なんでconst_castでないんだ?古いから?
ちなみに、プログラミング言語C++第3版によれば、「文字列リテラルは、char*に代入できる。(中略) C、C++の以前の定義では、文字列リテラルの型はchar*だった」そうです。
ワイド文字列リテラルに関しては、const wchar_t[]型とは書いてありますが、wchar_t*に代入可能かは判りませんでした(^_^;