首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >${NSD_GetText}总是返回空字符串

${NSD_GetText}总是返回空字符串
EN

Stack Overflow用户
提问于 2016-10-14 16:26:14
回答 1查看 1.2K关注 0票数 0

按照手册,我应该能够获得文本控件的文本,代码如下:

代码语言:javascript
复制
${NSD_GetText} $TextBox $0
MessageBox MB_OK "You typed:$\n$\n$0"

我总是从这个电话中得到空的字符串。在下面的代码中,文本框显示“正确”,但细节总是显示Contents:;如果我注释了对${NSD_GetText}的调用,就会得到Contents: wrong

代码语言:javascript
复制
!include nsDialogs.nsh
!include LogicLib.nsh

Var Dialog
Var TextBox

Page custom nsDialogsPage nsDialogsPageLeave
Page instfiles

Function nsDialogsPage
    StrCpy $0 "wrong"

    nsDialogs::Create 1018
    Pop $Dialog

    ${If} $Dialog == error
        Abort
    ${EndIf}

    ${NSD_CreateText} 0 12u 93% 12u "correct"
    Pop $TextBox

    nsDialogs::Show
FunctionEnd

Function nsDialogsPageLeave
FunctionEnd

Section
    ${NSD_GetText} $TextBox $0

    DetailPrint "Contents: $0"
SectionEnd

所以我想,当我试图打印它的内容时,这个控件可能不存在,并且尝试在输入到控件中时更新文本;这没有帮助。难以置信的是,NSIS是这样被破坏的,所以,我做错了什么?

代码语言:javascript
复制
!include nsDialogs.nsh
!include LogicLib.nsh

Var Dialog
Var TextBox
Var Text

Page custom nsDialogsPage nsDialogsPageLeave
Page instfiles

Function nsDialogsPage
    StrCpy $0 "wrong"

    nsDialogs::Create 1018
    Pop $Dialog

    ${If} $Dialog == error
        Abort
    ${EndIf}

    ${NSD_CreateText} 0 12u 93% 12u "correct"
    Pop $TextBox
    ${NSD_OnChange} $TextBox UpdateText

    nsDialogs::Show
FunctionEnd

Function nsDialogsPageLeave
FunctionEnd

Function UpdateText
    ${NSD_GetText} $TextBox $Text
FunctionEnd

Section
    DetailPrint "Contents: $Text"
SectionEnd
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-14 16:43:20

您是正确的,该控件在区段中不存在,因此您必须在自定义页上获取内容。

如果用户更改文本,则第二个示例应该正确工作,但如果用户不更改文本,则不会正确工作,因为更改事件不会触发。

通常只需阅读页面中的内容就可以退出回调:

代码语言:javascript
复制
Var Dialog
Var TextBox
Var Text

!include LogicLib.nsh
!include nsDialogs.nsh
Page custom nsDialogsPage nsDialogsPageLeave
Page instfiles

Function nsDialogsPage
    nsDialogs::Create 1018
    Pop $Dialog
    ${If} $Dialog == error
        Abort
    ${EndIf}

    ${NSD_CreateText} 0 12u 93% 12u "correct"
    Pop $TextBox

    nsDialogs::Show
FunctionEnd

Function nsDialogsPageLeave
${NSD_GetText} $TextBox $Text
FunctionEnd


Section
    DetailPrint "Contents: $Text"
SectionEnd
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40047898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档