Windows API编程:删除列表框选项详解

需积分: 19 5 下载量 162 浏览量 更新于2024-08-23 收藏 2.56MB PPT 举报
"Windows API编程资料,讲解如何在用户按下Del按钮后删除选中选项的代码实现。" 在Windows API编程中,当用户按下Del键,我们通常需要编写相应的处理逻辑来响应这一操作。在给定的描述中,展示了一个简单的例子,展示了如何删除列表框(ListBox)中选中的项目。这个例子涉及到以下几个关键知识点: 1. **SendMessage函数**:这是Windows API中的一个核心函数,用于发送消息到指定的窗口。在这个例子中,它用于获取当前选中项的索引(LB_GETCURSEL)和删除选中项(LB_DELETESTRING)。 - `SendMessage(hwndList, LB_GETCURSEL, 0, 0)`:此调用返回列表框中当前被选中项的索引。如果没有任何项被选中,返回LB_ERR。 - `SendMessage(hwndList, LB_DELETESTRING, i, wParam);`:此调用删除列表框中索引为i的字符串。wParam参数通常不需要,这里传入0。 2. **LB_GETCURSEL和LB_DELETESTRING消息**:这两个是Windows API中定义的ListBox控件的消息常量。 - `LB_GETCURSEL`:此消息用于获取列表框中当前选中项的索引。 - `LB_DELETESTRING`:此消息用于删除列表框中指定索引的字符串。 3. **LB_SETCURSEL消息**:在删除选中项之后,通常我们需要重新设置焦点到列表中的另一个项。`SendMessage(hwndList, LB_SETCURSEL, i-1, 0)`这行代码将焦点设为刚才删除项的前一个项。 4. **Windows API与Windows操作系统的关系**:Windows API是操作系统提供给开发者的一组接口,包含数千个函数,涵盖了窗口管理、图形绘制、内存管理等多个方面。开发者可以使用这些API来构建与操作系统深度集成的应用程序。 5. **Windows API的重要性**:熟悉并熟练使用Windows API对于开发高效、稳定的Windows应用程序至关重要。通过API,开发者可以直接操作系统底层,实现更丰富的功能和更好的用户体验。 6. **Windows应用程序设计原则**:一致性是Windows应用程序设计的一大特点,保证用户在不同软件中都能找到相似的交互方式,提升了用户的使用体验。 通过这样的示例和Windows API的学习,开发者不仅可以理解API的使用方法,还能通过实践加深对Windows操作系统的理解,提升编程技能。

#include<stdio.h> #include<stdlib.h> #define N 100 void menu(void); void fun(void(*p)(void)); void fun1(void); void fun2(void); void fun3(void); void fun4(void); struct student{ int id; char name[10]; char gender[5]; float score; }; int count = 0; struct student stu[N]; int main(void) { int input_num; struct student stu[N]; while(1){ menu(); printf("请输入:"); scanf("%d",&input_num); if (1 == input_num || 2 == input_num || 3 == input_num || 4 == input_num || 5 == input_num) switch (input_num) { case 1: fun(fun1); break; case 2: fun(fun2); break; case 3: fun(fun3); break; // case 4: // fun(fun4); case 5: printf("感谢使用\n"); exit(0); break; } else printf("输入错误\n"); } return 0; } void fun1(void) { // char s[5]; printf("请输入学生信息(学号、姓名、性别、成绩\n"); //while(scanf("%s",s) != EOF){ scanf("%d%s%s%f",&stu[count].id,stu[count].name,stu[count].gender,&stu[count].score); count++; // } } void fun2(void) { int i; for(i=0;i<count;i++) printf("学号:%d 姓名:%s 性别:%s 成绩:%f\n",stu[i].id, stu[i].name, stu[i].gender, stu[i].score); } void fun3(void) { int seek_num,i; printf("请输入学号\n"); scanf("%d",&seek_num); for(i=0;i<count;i++) { if(stu[i].id == seek_num) printf("本次搜索学生的信息如下\n学号:%d 姓名:%s 性别:%s 成绩:%f\n",stu[i].id, stu[i].name, stu[i].gender, stu[i].score); } } void fun4(void) { int del_id,i=0; struct student * del_p = stu; struct student * new_p = stu; printf("请输入要删除的学生的学号"); scanf("%d",&del_id); while (i < count) { if(del_p->id == del_id) { del_p++; i++; } new_p->id = del_p->id; new_p->name = del_p->name; new_p->gender = del_p->gender; new_p->score = del_p->score; i++; del_p++; new_p++; } } void fun(void(*p)(void)) { p(); } void menu(void) { printf("|====================================|\n"); printf("| 学 生 管 理 系 统 |\n"); printf("|====================================|\n"); printf("| 1.录入学生信息 |\n"); printf("| 2.查询已录入学生信息 |\n"); printf("| 3.搜索学生信息 |\n"); printf("| 4.删除学生信息 |\n"); printf("| 5.退出程序 |\n"); printf("|====================================|\n"); }里面的name怎么改

2023-06-05 上传