0

我有这样的菜单情况:

int menu_create(Ihandle *menu)
{
hamburger = IupItem("&Hamburger", "hamburger");
IupSetAttributes(hamburger, "AUTOTOGGLE=YES, RADIO=YES");

char* ce = "Ćev&apčići";
cevapcici = IupItem(utf8_to_cp1250(ce), "cevapcici");
IupSetAttributes(cevapcici, "AUTOTOGGLE=YES, RADIO=YES");

exit = IupItem("Exit\tAlt+F4", "exit");
img4 = IupLoadImage("icons\\delete_16x16.ico");
IupSetAttributeHandle(exit, "TITLEIMAGE", img4);

menu = IupMenu(
       IupSubmenu("File",
          IupMenu(
             hamburger,
             cevapcici,
             IupSeparator(),
             IupItem("Carro&t", "carrot"),
             IupSeparator(),
             exit,
             NULL)),
       NULL);

      IupSetFunction("exit", (Icallback)mnu_exit);
      ... etc...

  IupSetHandle("menu", menu);
return IUP_DEFAULT;
}

如何使用汉堡包和 cevapcici 项目获得“无线电切换组”功能,因此首先关闭第二个复选标记并相反。这是我的尝试,但它不起作用。

2)我在我的 Windows 7 上尝试 IUP 套件中的 webbrowser 示例。问题是在调整大小(增加)期间出现糟糕的黑色闪烁。此外,浏览器的背景在显示过程中会闪烁黑色。我在 Ubuntu 上尝试了相同的示例,并且也出现了闪烁,但由于背景为白色,因此不太明显。这里有什么方法可以摆脱那些闪烁,或者如果不是在 Windows 上获得 webbrowser 窗口的白色背景?

3) 由于 webbrowser 是 ole 对象(在 Windows 上),是否可以通过 IUP 句柄的引用或像我们以前从 MS 编程工具中所做的任何其他方式使用说“打印预览”或“缩放”功能?

wbInstance.ExecWB(Exec.OLECMDID_OPTICAL_ZOOM, ExecOpt.OLECMDEXECOPT_DONTPROMPTUSER, 150, DBNull.Value)

4) 我怎样才能从 IupTree 触发 key_up 事件?

5) IupTabs 的有趣情况:

frame3 = IupHbox(mat, val, NULL);

vboxt1 = IupVbox(frame3, NULL);
vboxt2 = IupVbox(frame3, NULL);
IupSetAttribute(vboxt1, "TABTITLE", "First documents... ");
IupSetAttribute(vboxt2, "TABTITLE", "Second documents... ");
tabs = IupTabs(vboxt1, vboxt2, NULL);

hbox1 = IupHbox(tabs, IupVbox(frame, tree, frame2, NULL), NULL);

dlg = IupDialog(hbox1);

当我设置两个选项卡应该相同的 frame3 时,我的 GUI 冻结了。但是,我必须在两个选项卡中获得相同的“垫子”(IupMatrix),因为通过更改选项卡,矩阵中的其他数据加载但足够相似以使用相同的矩阵和相关函数。

在这里做什么?

4

1 回答 1

1

1)RADIO属性属于IupMenu,不属于IupItem。这也意味着该菜单中的所有 IupItem 都将成为收音机的一部分。

一种解决方法是手动取消设置动作回调中的另一个切换。

2)该闪烁不是由IUP引起的。不知道为什么原生控件会这样做。

3) 是的,但您必须使用 OLE API 进行编程。如果您查看 IupOleControl 和 IupWebBrower 源代码并将代码发送给我,我很乐意将其添加到 IUP。

4)你没有。使用 K_ANY 回调。

5)您不能在任何对话框的不同位置重用控件。所以你必须有两个不同的框架,有两个不同的矩阵。您可以做的是封装您的矩阵,因此相同的函数将在您想要的任何时候创建一个具有相同属性和回调的矩阵。

于 2013-05-10T00:49:02.630 回答