如何在从LED文件加载的IUP对话框中访问GUI元素?
我爱上了IUP! 但是我无法弄清楚如何在IupLoad()
从LED文件加载的对话框中对GUI元素进行编程访问(在C中)。
一种非常费力的方法是编辑LED文件,以便手动为每个GUI元素提供句柄名称,然后为C中的每个元素手动定义相应的变量,然后使用IupGetHandle()
手动将句柄加载到每个变量中。
一种舒适的方法是使用内置的布局对话框工具将LED文件转换为C头文件 。 生成的代码使每个元素可用于名为Ihandle* containers[]
的简单数组中。 但这种方式剥夺了我们LED文件的好处,例如用户编辑二进制应用程序的GUI并保持C代码较小的能力。
有没有好办法呢?
如果它存在,我是否会高估第三种方式的好处?
我在C示例的目录中找不到任何IupLoad()
示例 。
我下面的示例仅显示顶部元素(对话框)的一个句柄名称。 它具有一个非常简单的对话框,手动定义每个元素根本不是一项艰苦的工作。 但这只是Stack Overflow的一个测试示例,我的问题与复杂的对话框有关。
C档案:
#include #include int main(int argc, char **argv) { IupSetGlobal("UTF8MODE", "YES"); // IupSetGlobal("UTF8MODE_FILE", "YES"); IupOpen(&argc, &argv); if(IupLoad("dropdown.led")) IupMessage("Error", "Failed to load LED."); else { Ihandle *dropdown = IupGetHandle("dropdown"); IupShow(dropdown); IupMainLoop(); } IupClose(); return EXIT_SUCCESS; }
对应的dropdown.led
文件:
dropdown = DIALOG[TITLE=dropdown.led]( HBOX[CMARGIN=10x10,CGAP=10]( LIST[VALUE=3, 1=я, 2=ты, 3=оно, 4=мы, 5=вы, 6=они, DROPDOWN=YES](do_nothing), LIST[VALUE=3, 1=ik, 2=je, 3=hij, 4=we, DROPDOWN=YES](do_nothing) ) )
这带来了另一个问题:我怎样才能看到俄文字符? 但是这个问题是一个单独的线程,我将据此创建。
与此特定示例相关的所有问题:
- 如何在从LED文件加载的IUP对话框中访问GUI元素? (当前)
- 如何在从LED文件加载的IUP对话框中显示俄文字母?
- IUP下拉列表中的差距
os使用IupGetHandle访问某些元素的方式然后使用IupGetChild *,GetBrother,GetParent函数来获取所需的元素。
另一种选择是使用NAME属性。 您在所需的元素上设置它然后使用IupGetDialogChild来检索给定NAME值的元素。