Можно. Навскидку - так :
Код:
!include "MUI2.nsh"
!include "CommCtrl.nsh" ; из Спрвочника !
OutFile "LISTVIEW-CHECKBOXES.exe"
RequestExecutionLevel user
Page custom CreatePage
!insertmacro MUI_LANGUAGE "English"
Function CreatePage
!insertmacro MUI_HEADER_TEXT "LISTVIEW-CHECKBOXES" "LISTVIEW-CHECKBOXES"
nsDialogs::Create 1018
Pop $0
${NSD_CreateListView} 0u 0u 300u 120u "ListView"
Pop $1
SendMessage $1 ${LVM_SETBKCOLOR} 0 0xC7EDCC
SendMessage $1 ${LVM_SETTEXTBKCOLOR} 0 0xC7EDCC
${NSD_LV_InsertColumn} $1 0 150 "Заголовок - Столбец 1"
!define /math _LISTVIEW_TEMP_STYLE ${LVS_EX_CHECKBOXES} | ${LVS_EX_FULLROWSELECT}
SendMessage $1 ${LVM_SETEXTENDEDLISTVIEWSTYLE} 0 ${_LISTVIEW_TEMP_STYLE}
!undef _LISTVIEW_TEMP_STYLE
; =========================================================================
FileOpen $4 "$EXEDIR\myfile.txt" r
loop:
FileRead $4 $9 ; в $9 заносится содержимое строк из файла $4 ( построчно, с каждым циклом)
IntOp $R3 $R3 + 1 ; счетчик Item_ов
${NSD_LV_InsertItem} $1 $R3 "$9" ; создание Item_ов в ListView
IfErrors +1 loop
FileClose $4
; =================================================================
; Установить состояние чекбоксов
${NSD_LV_SetCheckState} $1 0 1 ; отмечен
${NSD_LV_SetCheckState} $1 1 0 ; не отмечен
${NSD_LV_SetCheckState} $1 2 1 ; отмечен
; и т.д.
; кнопка контроля состояния чекбоксов
${NSD_CreateButton} 0u 124u 300u 15u "Проверка состояния чекбоксов" ;
Pop $2
${NSD_OnClick} $2 CheckItemState
nsDialogs::Show
System::Call `comctl32::ImageList_Destroy(iR0)`
FunctionEnd
Function CheckItemState
${NSD_LV_GetCheckState} $1 0 $R0
${NSD_LV_GetCheckState} $1 1 $R1
${NSD_LV_GetCheckState} $1 2 $R2
; и т.д.
IntCmp $R0 1 0 +2
StrCpy $R4 "$R4$\r$\n отмечен 0"
IntCmp $R1 1 0 +2
StrCpy $R4 "$R4$\r$\n отмечен 1"
IntCmp $R2 1 0 +2
StrCpy $R4 "$R4$\r$\n отмечен 2"
; и т.д.
MessageBox MB_OK|MB_ICONINFORMATION "$R4"
FunctionEnd
Section
SectionEnd
CheckItemState наверняка можно сделать универсальной для любого кол-ва Item_ов. Неохота заморачиваться...