如何用C语言做一个类似windows窗口

frost109 2004-05-02 01:40:27
我想做一个比如像window窗口那样的可以最小化,也可以一半大小的窗口
一半大小后后面的窗口也可见。请问怎么实现呢?
...全文
801 29 点赞 打赏 收藏 举报
写回复
29 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
piaozi2003 2004-05-10
标准C中不不包括任何输入输出系统的,要画一个窗口要看你使用的操作系统和编译器。
如果OS是保护模式,那只能调用他的绘图函数,如是实模式,要么自己直接访问显卡,要么使用编译器提供的图形API,可以看看Linux下的X11R6界面
  • 打赏
  • 举报
回复
ShadowCpp 2004-05-10
------------------------------
好像显存的起始地址是0x80000
------------------------------
……朋友,内存地址错了…… :)

16位编译器这个地址才对,显存的首地址……
char far *VideoBuffer = ( char far * ) ( 0xa0000000 );
32位编译器比如Watcom, DJGPP就用这个地址
char *VideoBuffer = ( char * ) ( 0xa0000 );

如果要做这样的东西,用32位编译器写吧推荐Watcom C可以不受内存限制。
但是如果分辨率高过320 * 200那么就要考虑显存换页了。
不过可以进行块状内存映射……速度快,就是麻烦点。

void point( int x, int y, unsigned char color )
{
/* 一个640 * 480直接访问显存高速写点函数 */
*( VideoBuffer + ( y << 9 ) + ( y << 7 ) + x ) = color;
}

还有方法比这个写点快得多……
  • 打赏
  • 举报
回复
海上的云 2004-05-10
既然想用C 
高手就用C说的清楚点吧
不要用什么可视化的工具
这个大家都会
  • 打赏
  • 举报
回复
zjxiaoyu 2004-05-10
受教.up.
  • 打赏
  • 举报
回复
imsheng 2004-05-10
"只要能把画一个象素的函数实现了,其他在这个基础上都能做出来."


对的,,这是最基本的,,也是最关键的 ,,如果这个函数做好了,,整个画图程序也就搞定,,
  • 打赏
  • 举报
回复
zjxiaoyu 2004-05-09
呵呵.我是做手机软件开发的,里面的代码全是c和汇编..
当然window,menu这些东西全是用c写的..只要能把画一个象素的函数实现了,其他在这个基础上都能做出来.
DOS下一般是直接写显存吧.(好像显存的起始地址是0x80000...)
windows下不太好弄吧.不过只要知道了显示驱动上面的那层画点的函数就应该能做出来吧.
  • 打赏
  • 举报
回复
djwinter 2004-05-09
其实这些程序要自己编程实现可能是没有这个必要
但是假如不知道原理,只会调用函数确是万万不能,
虽然这个程序具体的我不会做,但是我记得我曾在一本计算机图形学中看到过实现方式
只是不记得书的具体名字了
  • 打赏
  • 举报
回复
yaozha 2004-05-09
可以的
我见过一个启动盘就是作到了窗口最大化最小化~~启动盘不可能调用api吧
  • 打赏
  • 举报
回复
flowercity 2004-05-09
可以用C语言实现
DOS环境下运行的程序
我就在做这样的工作
主要是图形函数的使用
  • 打赏
  • 举报
回复
wangwubian 2004-05-09
学习
  • 打赏
  • 举报
回复
ShadowCpp 2004-05-09
自己写个画点函数……
自己绘制窗口……
自己绘制按钮……

我自己曾经做过这样的东西。
就是没加入最大化最小化……
源代码还保留着……
如果需要帮忙,叫上我。QQ:9898989

另外,这样的事最好不要做太多了。
现在有了API确实比较方便,确实可以提高开发速度。
但是有些朋友不想被这样的黑盒思想困住,想知道如何制作此类东西。
我想,按C++之父的一句话说,不要把时间用在重新发明车轮这样的事上。 ^_^
  • 打赏
  • 举报
回复
liubingqian 2004-05-07
看《Windows程序设计》
  • 打赏
  • 举报
回复
xxxl 2004-05-07
《windows程序设计》也是调用api
  • 打赏
  • 举报
回复
brtjiba 2004-05-07
我怒,会api了不起啊?不过我想其实就好比djwinter(独孤笨)所说得那样,单纯的c自己本身还是做不了的,我想应该是c里面嵌套汇编语言直接调用dos中断通过bios进行绘图吧?表理那些调用api得人,如果你想创造就要往底层走,如果你想做代码搬运工请去调用api吧!如果只想画个图尔以那么就听楼上那些人说得去掉用api!如果是想学习底层工作原理我建议你先看看汇编,学会怎么与显示的本质打交道,那么到时候说不定你自己也可以写出类似graphic.h
这样的商业库得!呵呵!熬了一个通宵终于把剩下的<80x86汇编语言设计>看完。现在头晕晕的,语言组织不起来,如果得罪到一些人请大家见谅
  • 打赏
  • 举报
回复
djwinter 2004-05-07
我怎么从来没有听说c是dos的东西,好像人家linux95%都是用c,剩下的也不是用vc吧,好像还是用汇编等低级语言吧....
我不知道微软编写windows用的什么语言,但是我相信肯定不是用的vc, 怎么现在学习底层的东西都被看作是浪费精力与时间....我真是无语
楼主的要求当然不是调用api了,我想楼主的意思是在非图形界面下出一个窗口,就如同在dos下的edit软件那样,有自己的窗口,这个在计算机图形学里面描述过,但是必须在纯c界面下编译,不能用vc或者bc等的编译器,因为这些编译器不支持graphic.h
  • 打赏
  • 举报
回复
PaulZhao 2004-05-07
究竟看懂我贴的代码没有?
  • 打赏
  • 举报
回复
PaulZhao 2004-05-07
frost109(残阳) :

!@#%%$&^%&*^%*&^(*&()*&^
  • 打赏
  • 举报
回复
12l 2004-05-07
支持楼主的钻研精神!!
用力的顶ing...
  • 打赏
  • 举报
回复
fanbest 2004-05-07
这帮子人竟然想到用C调用汇编直接在屏幕上绘图,想以此画出一个窗口,并且还能改变大小,还能够拖动。。。。会这个简直就是高手高手高高手了。

你研究最底层的东西是没错,但不要超越自己现在的能力好不好,估计搂主现在也是对C一知半解,就不要去学习这些东西了,记住,太高深的武功没有好的内功基础强行修炼会走火入魔。
  • 打赏
  • 举报
回复
frost109 2004-05-06
请问用C怎么调用api?
但我觉得调用api会不会失去c的特性
c是dos 的东西
到头来还得去调用window的东西
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-05-02 01:40
社区公告
暂无公告