社区
C语言
帖子详情
一个程序进程间的切换
sunnyqboy
2009-02-19 11:59:46
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现?
如果直接用界面保存函数,如何确定回来仍在那个栏位处?
...全文
174
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
打赏
举报
回复
这是窗口焦点切换操作。
切换的时候,保存当前录入的位置即可。
进程
间
的状态
切换
任何
一个
进程
在它的生命周期内都会处于下面三种状态,使用这三种状态可以简单描述运行在计算机上的
进程
之
间
的状态
切换
,
进程
的一生都处在这三种状态
间
相互转换。 运行态(Running):指该
进程
正在被CPU调度运行。 ...
进程
及
进程
间
的
切换
(操作系统)
但是并不是
进程
与
程序
是
一个
概念,
进程
是动态的(
进程
是担当分配系统资源(CPU时
间
,内存)的实体,是具有动态特性的),而
程序
是
一个
静态的资源。
进程
:通过
程序
运行,表现在操作系统执行的,被操作...
切换
进程
切换
线程
进程
间
切换
的步骤: 1 ,保存
程序
计数其以及其他寄存器。 2 , 更新当前处于“运行态”的
进程
的
进程
控制块,把
进程
状态改为相应状态, 更新其他相关域 3 , 把被
切换
进程
的
进程
控制块...
操作系统的多
进程
组织、
进程
间
切换
用PCB放在不同的队列中(就绪、阻塞),用状态转化来推进多个
进程
的执行操作系统如何完成
进程
的
切换
调度选择下
一个
进程
,得到下
一个
进程
的PCB,把上
一个
进程
的执行现场保存起来,把下
一个
进程
的现场覆盖到CPU对应的...
【操作系统】
进程
切换
到底是怎么个过程?
知道
进程
切换
是个什么概念后,我们需要知道,什么情况下回引起
进程
间
的
切换
呢? 一般来说,
进程
切换
发生在中断/异常/系统调用处理过程中,一般有以下几种情况: 1、阻塞式系统调用、虚拟地址
C语言
70,036
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章