2017-12-11 4 views
0


ListViewを使用してWindowsインストーラを作成しようとしました。私は、ビューをリストに項目を挿入することができる午前:NSIS ListView - GetItemTextが間違った値を返します

# put the plugin version to list view (in my case value 2.2) 
${NSD_LV_InsertItem} $list $i '$5' 

しかし、私は与えられたインデックスから値を読み取るしようとすると:

# get selected item plugin version 
${NSD_LV_GetItemText} $list 0 0 $R0 
MessageBox MB_OK "The text of item 0 is: $R0" 

私はメッセージが表示されました:アイテム0のテキストは次のとおりです。▯2
なぜ出力が正しく表示されないのですか?

ありがとうございました!

+0

NSISバージョン? Unicode? – Anders

答えて

0

"▯2"は、UTF-16LE文字列として表示される "2.2" ASCII文字列です。

第三者のCommCtrl.nshファイルがバグであるため、LVM_ *の定義がターゲットに適していることを確認する必要があります。

!include nsDialogs.nsh 
!include WinMessages.nsh ; The 3rd-party CommCtrl.nsh file is buggy, include this first to make sure LVM_* is defined correctly 
!ifndef LVM_GETITEMTEXT 
!define /math LVM_GETITEMTEXTA ${LVM_FIRST} + 45 
!define /math LVM_GETITEMTEXTW ${LVM_FIRST} + 115 
${_NSIS_DEFAW} LVM_GETITEMTEXT 
!endif 
!include "CommCtrl.nsh" 
!define /ifndef _COMMCTRL_NSH_VERBOSE ${_COMMCTRL_VERBOSE} 

Page Custom MyPage 

Var /Global List 
Var /Global i 

Function MyPage 
nsDialogs::Create 1018 
Pop $0 

${NSD_CreateListView} 0u 0u 300u 50% "Listview" 
Pop $list 
StrCpy $i 0 
StrCpy $5 "2.2" 
${NSD_LV_InsertColumn} $list 0 200 "column 0" 
${NSD_LV_InsertItem} $list $i '$5' 

${NSD_CreateButton} 0 60% 100% 13u "MsgBox item 0" 
Pop $0 
${NSD_OnClick} $0 DisplayItem0 

nsDialogs::Show 
FunctionEnd 

Function DisplayItem0 
Pop $R0 
${NSD_LV_GetItemText} $list 0 0 $R0 
MessageBox MB_OK "The text of item 0 is: $R0" 
FunctionEnd 
関連する問題