Tag: 菜单

我的字符集有什么问题(Win32 API)

我目前正在使用本教程学习Win32,而且我对显示的角色很难。 以这段代码为例,在创建时向我的窗口添加一个菜单: case WM_CREATE: { HMENU hMenu, hSubMenu; HICON hIcon, hIconSm; hMenu = CreateMenu(); hSubMenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, “Exit”); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, “File”); hSubMenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, “&GO”); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, “&Stuff”); SetMenu(hwnd, hMenu); hIcon = LoadImage(NULL, “Stuff.ico”, IMAGE_ICON, 32, 32, LR_LOADFROMFILE); if (hIcon) SendMessage(hwnd, WM_SETICON, ICON_BIG, […]

Ncurses菜单 – 记住选择

我正在使用Ncurses库来做一些交互式菜单,我不知道如何做一件事。 我有简单的菜单,只有很少的选项,我转向O_ONEVALUE可以同时选择多个选项,在发布菜单之前我获取所有菜单项并将它们标记为选中或不选,这取决于我保存在某处的位掩码否则,但是当菜单发布时,每个选项都关闭,这里是代码: //acquiring menu items ITEM** header_items = menu_items(params.header_opts_menu); ITEM* cur_item; if (header_items == NULL) { client_cleanup(); syslog_nsys_f(LOG_ERR, “error while getting header menu items”); } //selecting appropriate items long header_menu_items_count = ARRAY_SIZE(header_menu_choices); for (i = 0; i < header_menu_items_count; ++i) { if ((params.header_flags & (1 << (i))) != 0) decision = TRUE; else decision = […]

Ncurses:如何在不丢失当前位置的情况下刷新菜单?

如何在不丢失当前位置的情况下重新加载菜单中的数据? 例如,当用户“选择”项目时,执行改变数据的动作。 (更新项目,删除项目或在菜单中添加新项目。)我想重新加载菜单但仍然将光标保持在刚刚选择的项目上。 最好的方法是什么? 作为参考,这个问题似乎非常接近,但我认为它不包括添加/删除问题: 如何替换ncurses&C中的字符串菜单项 这个问题似乎也很相似,但对我来说太具体了: Ncurses菜单 – 记住选择

如何替换ncurses&C中的字符串菜单项

我试图找出如何从ncurses菜单中替换item_name 。 从手册页中 ,我找不到任何set_item_name或类似的东西。 任何想法,如果有一个解决方案吗? 例如,在KEY_ENTER上替换”Choice 1″ w / “String 1” #include #include char *choices[] = { “Choice 1”, “Choice 2”, “Choice 3”, “Choice 4”, “Exit”, }; int main() { ITEM **my_items, *cur_item; int c, i; MENU *my_menu; initscr(); cbreak(); noecho(); keypad(stdscr, TRUE); my_items = (ITEM **) calloc(6, sizeof(ITEM * )); for (i = 0; […]

如何找到激活后打开给定HMENU的菜单项(如果有)?

我想用原型实现一个函数 /* Locates the menu item of the application which caused the given menu ‘mnu’ to * show up. * @return true if the given menu ‘mnu’ was opened by another menu item, false * if not. */ bool getParentMenuItem( HMENU mnu, HMENU *parentMenu, int *parentMenuIdx ); 给定一个HMENU句柄,我希望能够找到应用程序中的哪个菜单项(如果有的话)打开它。 这基本上与GetSubMenu函数相反。 我目前的方法是查看应用程序的顶级窗口的每个HMENU,并检查我是否可以找到一个菜单项,在激活时打开给定的子菜单。 我使用GetMenuItemCount / GetSubMenu以递归方式执行此操作 。 然而,这是相当低效的,并且对于由上下文菜单项打开的菜单而言失败。 […]

在C语言中接受单个字符的菜单

我想在C程序中创建一个接受单个字符的简单菜单。 菜单将是这样的: [节目 [出口 如果用户输入’1’,’s’或’S’,程序将打印“Hello”并再次提示输入,如果用户输入’2’,E或’E’程序结束。 否则它应该打印“无效输入”并再次提示。 我能够创建程序,但问题是当用户输入12,13,14,15,16 …..所以从1开始,它显示Hello和其他选项相同。 我的代码是: #include void clearBuffer(); int main() { int i = 0; char selection; do { printf(“\t1. [S]how\n”); printf(“\t2. [E]xit\n”); printf(“Enter your selection from the number or character noted above: “); scanf(“%s”, &selection); clearBuffer(); if (selection == ‘1’ || selection == ‘s’ || selection == ‘S’) printf(“Hello”); else […]