gpt4 book ai didi

c - Newt 中的按钮

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:51 25 4
gpt4 key购买 nike

我需要一个简单的基于终端的窗口/小部件库,在 Linux 中具有 C 或 C++ 接口(interface)。我找到了 newt,它似乎足以满足我的需求,但我只有一个问题无法解决,谷歌也不是很有帮助:
如何确定按下了哪个按钮?下面是一个带有 2 个按钮的简单按钮示例 - “确定”和“取消”。如何确定按下的是哪一个?

#include <newt.h>
#include <stdlib.h>

void main(void) {
newtComponent form, b1, b2;
newtInit();
newtCls();

newtOpenWindow(10, 5, 40, 6, "Button Sample");

b1 = newtButton(10, 1, "Ok");
b2 = newtCompactButton(22, 2, "Cancel");
form = newtForm(NULL, NULL, 0);
newtFormAddComponents(form, b1, b2, NULL);

newtRunForm(form);

newtFormDestroy(form);
newtFinished();
}

更新:
收到反馈后,我尝试按照我的理解添加回调函数:

#include <newt.h>
#include <stdlib.h>

void b1Callback(newComponent co, void * data)
{
*((int*)data) = 4;
}

void main(void) {
void* data;
*((int*)data) = 0;
newtComponent form, b1, b2;
newtInit();
newtCls();

newtOpenWindow(10, 5, 40, 6, "Button Sample");

b1 = newtButton(10, 1, "Ok");
b2 = newtCompactButton(22, 2, "Cancel");
newtComponentAddCallback(b1, b1Callback, data);
form = newtForm(NULL, NULL, 0);
newtFormAddComponents(form, b1, b2, NULL);

newtRunForm(form);

newtFormDestroy(form);
newtFinished();
}

最佳答案

我的解决方案是:

  • 设置一个变量作为newtComponent answer
  • 销毁表单后调用此函数 answer = newtFormGetCurrent(form);
  • 并检查 answer 是否是我的 b1 按钮 if( answer == b1 )

关于c - Newt 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com