社区
C语言
帖子详情
一个程序进程间的切换
sunnyqboy
2009-02-19 11:59:46
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现?
如果直接用界面保存函数,如何确定回来仍在那个栏位处?
...全文
158
6
打赏
收藏
一个程序进程间的切换
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现? 如果直接用界面保存函数,如何确定回来仍在那个栏位处?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunnyqboy
2009-02-26
打赏
举报
回复
用了panel,出现了一个比较蹊跷的问题:如下
#include <curses.h>
#include <panel.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void initcurses();
void initwin(WINDOW **wins,int k);
void initpanel(PANEL **panels,WINDOW **wins,int k);
void set_user_ptrs(PANEL **panels,PANEL **ptrs,int n);
main()
{
int ch,i=1,j =0 ,k=2;
int start=0;
int exits=0;
int m =0;
WINDOW *wins[2];
PANEL *panels[2];
PANEL *top;
PANEL *ptrs[2];
pid_t pid;
initcurses();
initwin(wins,k);
initpanel(panels,wins,k);
set_user_ptrs(panels,ptrs,2);
box(wins[0],'.',',');
box(wins[1],'!','#');
top = panels[0];
top_panel(top);
update_panels();
doupdate();
while (ch = getch())
{
if(m < 0) m = m + 2;
m = m%2;
switch(ch)
{
case KEY_LEFT:
//top = ptrs[m];
top = panels[m];
top_panel(top);
m--;
break;
case KEY_RIGHT:
//top = ptrs[m];
//把代码换成注释部分再按左右键就不能正常切换了,为什么?
top = panels[m];
top_panel(top);
m++;
break;
case 27:
endwin();
exit(1);
}
update_panels();
doupdate();
}
endwin();
}
void initcurses()
{
initscr();
noecho();
keypad(stdscr,TRUE);
box(stdscr,'┃','━');
refresh();
}
void initwin(WINDOW **wins,int k)
{
int i;
for(i = 0;i < k;i++)
{
wins[i] = newwin(5,20,4,10);
}
}
void initpanel(PANEL **panels,WINDOW **wins,int k)
{
int i;
//for(i = (k-1);i >= 0;i--)
for(i = 0;i < k;i++)
{
panels[i] = new_panel(wins[i]);
}
}
void set_user_ptrs(PANEL **panels,PANEL **ptrs,int n)
{
int i = 0;
if((i + 1) == n)
ptrs[i] = panels[0];
else
ptrs[i] = panels[i+1];
}
waizqfor
2009-02-25
打赏
举报
回复
[Quote=引用楼主 sunnyqboy 的帖子:]
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现?
如果直接用界面保存函数,如何确定回来仍在那个栏位处?
[/Quote]
设置焦点函数 然后保存的时候记录当前位置
Dinelgua
2009-02-25
打赏
举报
回复
切之前 记录到文件中
沙漠里的海豚
2009-02-25
打赏
举报
回复
不懂了呵呵,up一下
Leejun527
2009-02-25
打赏
举报
回复
ncurse库里面有设置焦点的函数。具体忘了。
最好用多个面板panel来切换,这样避免界面显示混乱。
dongpy
2009-02-25
打赏
举报
回复
这是窗口焦点切换操作。
切换的时候,保存当前录入的位置即可。
深入分析Linux内核源码.chm
第七章
进程
间
通信 7.1 管道 7.2 信号(signal) 7.3 System V 的IPC机制 第八章 虚拟文件系统 8.1 概述 8.2 VFS中的数据结构 8.3 高速缓存 8.4 文件系统的注册、安装与拆卸 8.5 限额机制 8.6 具体文件系统举例 8.7 ...
进程
间
的状态
切换
任何
一个
进程
在它的生命周期内都会处于下面三种状态,使用这三种状态可以简单描述运行在计算机上的
进程
之
间
的状态
切换
,
进程
的一生都处在这三种状态
间
相互转换。 运行态(Running):指该
进程
正在被CPU调度运行。 ...
进程
及
进程
间
的
切换
(操作系统)
但是并不是
进程
与
程序
是
一个
概念,
进程
是动态的(
进程
是担当分配系统资源(CPU时
间
,内存)的实体,是具有动态特性的),而
程序
是
一个
静态的资源。
进程
:通过
程序
运行,表现在操作系统执行的,被操作...
切换
进程
切换
线程
进程
间
切换
的步骤: 1 ,保存
程序
计数其以及其他寄存器。 2 , 更新当前处于“运行态”的
进程
的
进程
控制块,把
进程
状态改为相应状态, 更新其他相关域 3 , 把被
切换
进程
的
进程
控制块...
进程
切换
和线程
切换
当有
一个
进程
a
一个
进程
b,
进程
a去cpu上运行其代码,这个运行不是无节制的,而是有
一个
时
间
片的东西会遏制运行时
间
,若
进程
a的时
间
片到了,则会被
切换
出来。 此时有两个非常重要的东西,
程序
计数器(保存
程序
即将要...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章