回答編集履歴
2
追記
test
CHANGED
@@ -5,6 +5,28 @@
|
|
5
5
|
- しかも呼出先では実質constとして扱う(書込みしない)はずだしこれまで問題なかった。
|
6
6
|
- それに今後このコードはUNICODEビルドなんて絶対しないから、`T`をつけなくてもいいだろう。
|
7
7
|
|
8
|
-
|
9
8
|
といった理由だと思います(でも大丈夫だろうか?)
|
10
9
|
|
10
|
+
なお、リストコントロールなどMFCでのconst外し技について考察している過去記事とMFCソースも参考としてあげておきます。
|
11
|
+
|
12
|
+
[(Visual C++)CStringをLPTSTRにキャストしてはいけない理由。](http://www.sutosoft.com/room/devdiary/old/dev200105.html)
|
13
|
+
> (おそらく) よって、この場合はLPTSTRにキャストしても良い場合である。 事実MFCのCListCtrl::SetItem関数でもconstを外している。
|
14
|
+
|
15
|
+
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\winctrl2.cpp
|
16
|
+
```C++
|
17
|
+
BOOL CListCtrl::SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
|
18
|
+
int nImage, UINT nState, UINT nStateMask, LPARAM lParam, int nIndent)
|
19
|
+
{
|
20
|
+
ASSERT(::IsWindow(m_hWnd));
|
21
|
+
ASSERT((GetStyle() & LVS_OWNERDATA)==0);
|
22
|
+
|
23
|
+
LVITEM lvi;
|
24
|
+
lvi.mask = nMask;
|
25
|
+
lvi.iItem = nItem;
|
26
|
+
lvi.iSubItem = nSubItem;
|
27
|
+
lvi.stateMask = nStateMask;
|
28
|
+
lvi.state = nState;
|
29
|
+
lvi.pszText = (LPTSTR) lpszItem;
|
30
|
+
```
|
31
|
+
|
32
|
+
|
1
追記
test
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
[LPCSTR, LPCTSTR and LPTSTR](https://stackoverflow.com/a/7313635)の回答と近いですが
|
4
4
|
- 非constなTCHAR配列へのポインタを要求しているが、CStringでGetBufferするのが面倒くさかった。
|
5
5
|
- しかも呼出先では実質constとして扱う(書込みしない)はずだしこれまで問題なかった。
|
6
|
+
- それに今後このコードはUNICODEビルドなんて絶対しないから、`T`をつけなくてもいいだろう。
|
7
|
+
|
6
8
|
|
7
9
|
といった理由だと思います(でも大丈夫だろうか?)
|
8
10
|
|