如何用“C语言”实现“选项有功能的文本菜单”?
C语言菜单介绍

Turbo C 2.0中顶上一行为Turbo C 2.0 主菜单, 中间窗口为编辑区, 接下来是信息窗口, 最底下一行为参考行。
这四个窗口构成了Turbo C 2.0的主屏幕, 以后的编程、编译、调试以及运行都将在这个主屏幕中进行。
主菜单主菜单在Turbo C 2.0主屏幕顶上一行, 显示下列内容:File Edit Run Compile Projec Options Debug Break/watch 除Edit外, 其它各项均有子菜单, 只要用Alt加上某项中第一个字母(即大写字母), 就可进入该项的子菜单中。
一、File(文件)菜单按Alt+F可进入File菜单, 该菜单包括以下内容:.Load(加载)装入一个文件, 可用类似DOS的通配符(如*.C)来进行列表选择。
也可装入其它扩展名的文件, 只要给出文件名(或只给路径)即可。
该项的热键为F3, 即只要在主菜单中按F3即可进入该项, 而不需要先进入File菜单再选此项。
.Pick(选择)将最近装入编辑窗口的8个文件列成一个表让用户选择, 选择后将该程序装入编辑区, 并将光标置在上次修改过的地方。
其热健为Alt-F3。
.New(新文件)说明文件是新的, 缺省文件名为NONAME.C, 存盘时可改名。
.Save(存盘)将编辑区中的文件存盘, 若文件名是NONAME.C时, 将询问是否更改文件名, 其热键为F2。
.Write to(另存为)可由用户给出文件名将编辑区中的文件存盘, 若该文件已存在, 则询问要不要覆盖。
.Directory(目录)显示目录及目录中的文件, 并可由用户选择。
.Change dir(改变目录)显示当前目录, 用户可以改变显示的目录。
.Os shell(暂时退出)暂时退出Turbo C 2.0到DOS提示符下, 此时可以运行DOS 命令, 若想回到Turbo C 2.0中, 只要在DOS状态下键入EXIT即可。
.Quit(退出)退出Turbo C 2.0, 返回到DOS操作系统中, 其热键为Alt+X。
c语言 设计下拉式菜单和快捷菜单

实验(五)设计下拉式菜单和快捷菜单电科081班级张辉NO.:080712110078实验目的:1.熟悉菜单设计器的使用。
2.掌握设计下拉式菜单的方法。
3.掌握快捷菜单的设计和调用。
实验要求:1.设计一个“货物管理系统”下拉式菜单,要求如下:a.包括“数据录入”、“数据维护”和“数据查询”3个子菜单。
b.能够对货物表作浏览、录入、更新、删除等操作。
2.设计一个快捷菜单,要求具有查找及导入导出功能,供在“货物管理系统”菜单中维护数据时使用。
实验准备:阅读主教材5.1.1节、5.1.3节、5.1.4节和5.2节。
实验步骤:5-1建立“货物管理系统”菜单:执行命令“MODIFY MENU货物管理系统”,在随即出现的“新建菜单”对话框中选定“菜单”按钮,即出现“菜单设计器”窗口:在“菜单名称”列中输入“数据录入(\<L)”→在“结果”列中选择“子菜单”→单击“创建”按钮进入子菜单页→建立“数据浏览”和“数据添加”两个菜单项。
用同样方法建立“数据维护”及其“数据修改”和“数据删除”两个菜单项,“数据查询”菜单及其“按货号查询”和“按货物名称查询”两个菜单项,以及“退出”菜单。
显示情况如图:5-2进入“数据录入”菜单的子菜单页→单击“数据浏览”行→在“结果”列中选择“命令”→在命令框中输入命令“BROWSE TITLE'浏览货物信息' NOMENU NODELETE NOMODIFY”→选定“选项”列按钮→参照主教材5.1.3节,在“提示选项”对话框中将Ctrl+L定义为“数据浏览”菜单项的快捷键。
单击“数据维护”行→在“结果”列中选择“命令”→在命令框中输入“APPEND NOMENU”→进入“提示选项”对话框→定义快捷键为Ctrl+T,并在“信息”文本框中输入“货号以字母开头,后跟4位数字字符。
””,以便在用户选择该菜单项时给出提示。
5-3对“数据维护”菜单的两个菜单项设置属性:进入“数据维护”菜单的子菜单页→单击“数据修改”行→在“结果”列中选择“命令”→在命令框中输入“BROWSE TITLE'修改数据' NOMENU NODELETE”→进入“提示选项”对话框→定义快捷键为Ctrl+X。
c++ menu

3. DrawItem(),这是一个虚函数,如果菜单设置成可以自绘类型,则这个函数将在生成菜单、弹出菜单、选中菜单、点击菜单等时由系统框架调用。因此,这个函数是一个很有用的函数,它可以帮你绘制出各种样式的菜单。
4. MeasureItem()也是一个虚函数,当菜单被创建的时候由系统框架调用。这个函数用来设置菜单的大小。
二、nFlags说明:
只有当nFlags设置成MF_OWNERDRAW的时候,系统框架才会重绘菜单。 MF_CHECKED:命令旁显示默认复选标志 MF_UNCHECKED:清除命令旁的复选标志 MF_DISABLED:禁止此菜单命令,但是不变灰显示 MF_ENABLED:允许此菜单命令,恢复到正常状态 MF_GRAYED:禁止此菜单命令,变灰显示 MF_MENUBARBREAK:对于静态菜单,放到新行;对于弹出菜单,放到新栏 中,栏间有分隔线 MF_MENUBREAK:对于静态菜单,放到新行;对于弹出菜单,放到新栏,栏间无分隔线 MF_OWNERDRAW:指定该命令是自画式菜单命令 MF_POPUP:指定该菜单命令有一个关联的弹出式菜单 MF_SEPARATOR:画一条水平分隔线,只用于弹出式菜单 MF_STRING:指定此菜单命令是一个字符串 CMenu类从CObject类派生而来。为什么要使用CMenu类呢?AppWzard不是把菜 单做好了吗?在资源编辑器上修改菜单不是很方便吗? 感觉学vc++稍微深入一点好,至少要能搞清楚AppWizard在背后都干了些什么东西。 事实上mfc就是用CMenu类来生成菜单的。让我们就从CMenu开始吧。 CMenu生成的菜单有两种:Popup类型和非Popup类型。这两种方法里又可以分 成使用资源编辑器生成的菜单资源和不使用这个资源。对于非Popup类型的菜单, 必须在创建出来后把它
c语言menu函数的用法

c语言menu函数的用法C语言中的menu函数是用来创建菜单的函数,它可以返回一个包含菜单项的列表。
以下是一个简单的menu函数的用法示例:```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义菜单项类型typedef struct {char name[20];int option;} menu_item;// 定义菜单函数void CreateMenu(char *title) {// 创建菜单printf("欢迎来到菜单函数!");printf("菜单项目:");for (int i = 0; i < 25; i++) {printf("%s ", title);menu_item items[] = {{ "选项%d", i + 1 },{ "选项%d+1", i + 2 }};for (int j = 0; j < sizeof(items) / sizeof(menu_item); j++) {printf(" ");}printf(" ");}printf("");}// 返回菜单项列表menu_item *GetMenuitems() {// 获取菜单项列表int i;char *path = "."; // 隐藏文件路径menu_item *items = NULL;if ((items = malloc(sizeof(menu_item))) == NULL) {printf("无法获取菜单项列表!");return items;for (i = 0; i < 25; i++) {if (strcmp(path, menu_items[i].name) == 0) { items[i] = menu_items[i].option;break;}path += strlen("/" + menu_items[i].name);}if (items[i] == NULL) {printf("无法找到选项%d!", i);free(items);items = NULL;}return items;}int main() {// 创建菜单并返回选项数量char *title = "选项1";menu_item *items = CreateMenu(title);if (items == NULL) {printf("无法创建菜单!return 1;}int choice = GetMenuitems();if (choice != 25) {printf("错误的选项数量!");return 1;}// 显示结果printf("您选择了:%s", items[choice].name);free(items);return 0;}```在上面的示例中,`CreateMenu`函数创建了一个包含25个菜单项的菜单,并向其中添加了两个选项。
如何在C语言中编写函数以实现某一特定功能

如何在C语言中编写函数以实现某一特定功能
在C语言中编写函数以实现某一特定功能的主要内容主要分
为以下几个步骤:
第一步:声明函数。
函数声明包括定义函数名称、返回值类型、参数列表(类型和参数名)等内容。
函数的声明主要位于程序的开头部分,也就是文件的顶端,它通常由 returnType FunctionName (parameterList) 来表示;
第二步:编写参数检查语句。
这里使用 if 和 else 语句进行检查。
例如,可以使用 if 语句检查参数是否为 NULL,并将其
替换为有效参数;
第三步:编写函数主体。
这里主要包括函数中需要执行的任务,使用变量来接收和保存参数,例如使用 int 接收需要处理的数值;
第四步:编写返回语句。
return 语句可以向函数调用者返回一
个或多个结果,它通常由 returnValue 来表示,其中returnValue 由函数定义时指定。
有时函数可能不需要返回任
何值,这时可以使用 void 来表示;
第五步:编写函数调用语句。
在函数使用之前,必须使用函数调用语句将其启动,函数调用语句可以使用传递给函数的参数,此处可以使用不同类型的参数,根据函数调用者传递给函数的参数来决定使用哪种类型的参数;
第六步:测试函数。
一般情况下,在编写完函数后,使用单元测试工具或Debug功能对函数进行测试,以确认函数是否符合预期。
因此,编写函数以实现某一特定功能的主要内容主要包括声明函数、编写参数检查语句、编写函数主体、编写返回语句和编写函数调用语句等6个步骤,并且需要在最后进行单元测试和debug。
C语言菜单界面的实现方

C语言菜单界面的实现方在C语言中,可以使用多种方式实现菜单界面,比如利用循环和条件语句结合的方式,或者使用函数和结构体来组织菜单功能。
下面将分别介绍两种实现方式。
一、使用循环和条件语句结合的方式实现菜单界面。
1. 定义一个整型变量menuChoice作为用户选择菜单的输入,用来控制循环。
2. 使用无限循环while(1)来展示菜单和获取用户输入。
3. 在循环中使用条件语句switch来处理用户输入。
下面是一个简单的例子:```c#include <stdio.h>int maiint menuChoice;while (1)printf("========== 菜单 ==========\n");printf("1. 选项一\n");printf("2. 选项二\n");printf("3. 选项三\n");printf("0. 退出\n");printf("请输入您的选择: "); scanf("%d", &menuChoice); switch (menuChoice)case 1:printf("您选择了选项一\n"); //TODO:执行选项一的操作break;case 2:printf("您选择了选项二\n"); //TODO:执行选项二的操作break;case 3:printf("您选择了选项三\n"); //TODO:执行选项三的操作break;case 0:printf("谢谢使用,再见!\n"); return 0;default:printf("无效的选择,请重新输入\n");break;}}```二、使用函数和结构体来组织菜单功能。
C语言编写的文本编辑器
C语言编写的文本编辑器在现代的计算机应用领域中,文本编辑器是一个不可或缺的工具。
它们提供了一种方便的方式来编辑、查看和管理文本文件。
C语言作为一种高级编程语言,被广泛应用于软件开发领域。
本文将介绍如何使用C语言编写一个简单的文本编辑器。
一、概述文本编辑器是一种计算机程序,旨在帮助用户处理文本文件。
它们提供了一系列功能,如插入、删除、复制、粘贴和查找等,以便用户可以轻松编辑文本。
C语言作为系统级编程语言,具有高效的内存管理和强大的控制能力,非常适合编写文本编辑器。
二、设计思路在开始编写文本编辑器之前,需要明确其基本功能和设计思路。
一个简单的文本编辑器应具备以下功能:1. 新建、打开、保存文本文件;2. 插入、删除、复制、粘贴文本内容;3. 查找和替换文本内容;4. 撤销和重做操作。
基于以上功能,我们可以使用C语言的字符串处理函数和文件操作函数来实现文本编辑器。
三、核心代码下面是一个简化版本的C语言文本编辑器的核心代码示例:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_LENGTH 1000int main() {char buffer[MAX_LENGTH];FILE *file;char filename[100];int choice;printf("欢迎使用简单文本编辑器\n");while (1) {printf("\n1. 新建文件\n2. 打开文件\n3. 保存文件\n4. 插入文本\n5. 删除文本\n6. 复制文本\n7. 粘贴文本\n8. 查找文本\n9. 替换文本\n10. 撤销操作\n11. 重做操作\n12. 退出\n");printf("请输入选项:");scanf("%d", &choice);switch (choice) {case 1:printf("请输入文件名:"); scanf("%s", filename);file = fopen(filename, "w"); if (file == NULL) {printf("无法创建文件\n"); }break;case 2:printf("请输入文件名:"); scanf("%s", filename);file = fopen(filename, "r"); if (file == NULL) {printf("文件不存在\n"); }break;case 3:if (file == NULL) {printf("请先新建或打开文件\n");} else {fclose(file);printf("文件已保存\n");file = NULL;}break;case 4:if (file == NULL) {printf("请先新建或打开文件\n");} else {printf("请输入要插入的文本:"); fgets(buffer, MAX_LENGTH, stdin); fputs(buffer, file);fflush(file);}break;// 其他功能代码省略...case 12:if (file != NULL)fclose(file);printf("感谢使用简单文本编辑器,再见!\n");exit(0);default:printf("无效的选项\n");break;}}return 0;}```该代码演示了一个简单的文本编辑器,用户可以通过输入选项来执行各种功能。
计算机C语言编程教程 第三章 常用控件
列表框控件(List Box)
• 列表框控件是一个条目列表,它允许用户 从所列出的表项中进行单项或多项选择, 被选择的项呈高亮度显示。列表框具有边 框,并且一般带有一个垂直滚动条。列表 框分单选列表框和多重选择列表框两种: 单选列表框一次只能选择一个列表项,而 多重选择列表框可以进行多重选择。
组合框控件(Combo Box)
对话框包含静态正文控件、按钮控件、图 片控件、编辑框控件、列表框控件和组合 框等控件。
精品课件!
计算机C语言编程教程 第 三章 常用控件
控件的基本概念
• 控件是独立的小部件,在对话框与用户的交互 过 程 中 , 担 任 着 主 要 角 色 。 对 话 框 在 Visual C++中实际上是窗口,因此,控件可以说是构 成应用程序窗体的主要组成部分。
Visual C++中的控件
• Visual C++ 6.0中所有的控件类都是由 CWnd类派生来的,因此,控件实际上也 是窗口。控件通常是作为对话框的子窗口 而创建的,控件也可以出现在视图窗口、 工具栏和状态栏中。控件的种类很多, Visual C++ 6.0提供的一些基本控件如 图3-3所示。
pDC->TextOut(200,200,"欢迎使 用Visual C++");
思考和习题
• 本章所介绍的控件的名称、功能和其常用 属性有哪些?
• 如何打开控件工具栏,在对话框中添加、 删除、复制和移动控件,以及如何使用控 件布局工具栏?
• 对话框应用程序的建立步骤是什么? • 创建一个借书的基本信息对话框,要求该
控件应用实例
设计一个学生个人信息登记表窗体。该范 例介绍如何在对话框中添加前面介绍的各 类控件,并将这些控件进行布局设置,组 成一个常见的学生个人信息登记表窗体。
菜单
CWnd*pWndPopupOwner =this;
pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,
}
当点击“图形”时,显示如下:
代码如下:
void CSy3View::OnRectangle()
{
// TODO: Add your command handler code here
CClientDC dc(this);
CBrush *oldbrush,newbrush;
newbrush.CreateSolidBrush(RGB(255,0,0));
oldbrush = dc.SelectObject(&newbrush);
dc.Rectangle(80,80,300,200);
dc.SelectObject(oldbrush);
newbrush.DeleteObject();
}
(2)为应用程序SY3新增的菜单项添加控制功能。当“文本”菜单项被选中时,“图形”菜单项无效;当“图形”菜单项被选中时,“文本”菜单项无效。
void CSy3View::OnUpdateRectangle(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(m_enable_rectangle);
}
(3)为应用程序新增的菜单添加快捷菜单。
c语言程序设计菜单
c语言程序设计菜单C语言程序设计菜单是一种在C语言程序中实现用户交互界面的方法,它允许用户通过选择不同的选项来执行不同的程序功能。
设计一个菜单通常需要考虑以下几个方面:1. 菜单的布局:菜单应该清晰、直观,易于用户理解。
通常包括选项列表和提示信息。
2. 选项的组织:选项应该按照逻辑顺序排列,使用户能够容易地找到他们想要的功能。
3. 输入的处理:程序需要能够识别用户的输入,并根据输入执行相应的操作。
4. 错误处理:程序应该能够处理无效输入,并给出相应的提示信息。
5. 循环结构:菜单通常使用循环结构,直到用户选择退出程序。
下面是一个简单的C语言程序设计菜单的示例:```c#include <stdio.h>int main() {int choice;do {printf("\n欢迎使用C语言程序设计菜单\n");printf("1. 计算两个数的和\n");printf("2. 计算两个数的差\n");printf("3. 退出程序\n");printf("请输入您的选择(1-3):");scanf("%d", &choice);switch(choice) {case 1:printf("您选择了计算两个数的和。
\n");// 计算和的代码break;case 2:printf("您选择了计算两个数的差。
\n");// 计算差的代码break;case 3:printf("您选择了退出程序。
\n");break;default:printf("无效的选择,请重新输入。
\n");}} while(choice != 3);return 0;}```在这个示例中,我们使用了一个`do-while`循环来实现菜单的重复显示,直到用户选择退出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <process.h>
#include <dos.h>
#include <conio.h>
#define Key_DOWN 0x5100
#define Key_UP 0x4900
#define Key_ESC 0x011b
#define Key_ALT_F 0x2100
#define Key_ALT_X 0x2d00
#define Key_ENTER 0x1c0d
void box(int startx,int starty,int high,int width);
main()
{
int i,key,x,y,l;
char *menu[] = {"File","Edit","Run","Option","Help","Setup","Zoom","Menu"}; char *red[] = { "F","E","R","O","H","S","Z","M" };
char *f[] = {"Load file", "Save file", "Print", "Modify ", "Quit A1t_x"};
char buf[16*10*2],buf1[16*2];
while(1)
{
textbackground(BLUE);
clrscr();
textmode(C80);
window(1,1,80,1);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(5,1);
for(i=0,l=0;i<8;i++)
{
x=wherex();
y=wherey();
cprintf("%s",menu[i]);
l=strlen(menu[i]);
gotoxy(x,y);
textcolor(RED);
cprintf("%s",red[i]);
x=x+l+5;
gotoxy(x,y);
textcolor(BLACK);
}
gotoxy(5,1);
key=bioskey(0);
switch (key){
case Key_ALT_X:
exit(0);
case Key_ALT_F:
{
textbackground(BLACK);
textcolor(WHITE);
gotoxy(5,1);
cprintf("%s",menu[0]);
gettext(5,2,20,12,buf);
window(5,2,20,9);
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,7,16);
for(i=2;i<7;i++)
{ gotoxy(2,i);
cprintf("%s",f[i-2]);
}
gettext(2,2,18,3,buf1);
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",f[0]);
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X)
{
if ((key==Key_UP)||(key==Key_DOWN)) {
puttext(2,y,18,y+1,buf1);
if (key==Key_UP)
y=y==2?6:y-1;
else
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",f[y-2]);
gotoxy(2,y);
}
else
if (key==Key_ENTER)
{
switch ( y-1 ){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
exit(0);
default:
break;
}
break;
}
else
if (key==Key_ESC)
break;
}
if (key==Key_ALT_X) exit(0);
break;
}
}
}
}
void box(int startx,int starty,int high,int width) { int i;
gotoxy(startx,starty);
putch(0xda);
for (i=startx+1;i<width;i++) putch(0xc4); putch(0xbf);
for( i=starty+1;i<high;i++)
{
gotoxy(startx,i);putch(0xb3);
gotoxy(width,i);putch(0xb3);
}
gotoxy(startx,high);
putch(0xc0);
for (i=startx+1;i<width;i++) putch(0xc4); putch(0xd9);
return ;
}。