c语言中的窗口,c语言中的编程窗口

本文目录一览:

C语言怎样构造窗口

其实可以用代码实现,但是这个比较复杂不想VB那样简单。为此你必须写一些接近硬件的函数,而且要写写函数对显示模式进行设置。主要过程是 设置显示模式 –保存显示器内容—–载入菜单—接收用户选择—-恢复显示内容,这些过程全部要自己写代码实现。

给你个大概的代码

int int86(num,inregs,outregs)

int num//the interruptnumber

union REGS *inregs //the input register values

union REGS *outregs //the output register values

INT86()函数返回的是AX中的值

REGS的定义在 DOS.H中

struct WORDREGS//对寄存器用16位操作

{

unigned int ax,bx,cx,dx,si,di,cflag;

};

struct BYTEREGS//对寄存器用8位操作

{

unsiged char al,ah,bl,bh,cl,ch,dl,dh;//bh存显示页号dh存光标行号dl列号

};

union REGS

{

struct WORDREGS x;

struct BYTEREGS h;

};

void goto_xy(x,y)//send the cursor to x,y用了10H功能号2

int x,int y;

{ union REGS r;

r.h.ah=2;//curor addressing funciton

r.h.dl=y;

r.h.dh=x;

int86(0x10,r,r);

}

//中断10H的子功能号8,字符ascii存在al寄存器属性存在AH

//save a portion of the screen

void save_video(startx,endx,starty,endy,buf_ptr)

int startx,endx,starty,endy;

unsigned int; *buf_ptr;

{

union REGS r;

register int i,j;

for(i=starty;iendy;i++)

for(j=startx;jendx;j++)

{ goto_xy(j,i);

r.h.ah=8;//read character function

r.h.bh=0;//assume active display page is 0

*buf_ptr++=int86(0x10,r,r);

putchar(”)//clear the screen

}

}

//中断10H的功能号为9 恢复屏幕

//restore a portion of the screen

void restore_video(startx,endx,starty,endy,buf_ptr)

int startx,endx,starty,endy;

unsigned char *buf_ptr;//you cuo ba

union REGS r;

register int i,j;

for(j=starty;jendx;j++)

{goto_xy(j,i);

r.h.ah=9;

r.h.bh=0;

r.x.cx=1;//number of times to write the character

r.h.al=*buf_ptr++;

r.h.bl=*buf_ptr++;

int86(0x10,r,r);

}

}

//选择菜单 display a pop_up menu and return selection

int popup(menu,keys,count,x,y,border)

char*menu[];//menu text

char *keys//hot keys

int count//number of menu items

int x,y;//x,y coordinates of left hand corner

int border //no border if o

void display_menu(menu,x,y,count)

//display the menu in its proper location

char * menu[];

int x,y,count;

{registre int i;

for(i=0;icount;i++,x++)

{goto_xy(x,y);

printf(menu[i]);

}

}

//画边框函数

void draw_border(int startx,starty,endx,endy)

{ register int i;

for(i=startx+1;iendx;i++)

{goto_xy(i,starty);

putchar(179);

goto_xy(i,endy);

putchar(179);

}

for(i=starty+1;iendy;i++)

{goto_xy(startx,i);

putchar(196);

goto_xy(endx,i);

putchar(196);

}

goto_xy(startx,starty);putchar(218);

goto_xy(startx,endy);putchar(191);

goto_xy(endx,starty);putchar(192);

goto_xy(endx,endy);putchar(217);

}

//接收用户的选择 input user’s selection

get_resp(x,y,count,menu,keys)

int x,y,count;

char *menu[]

char *keys;

{

union inkey{char ch[2]; int i;}c;

int arrow_choice=0,key_choice;

y++;

//highlight the first selection

goto_xy(x,y);

write_video(x,y,menu[0],REV_VID);//reverse video

for(;;)

{while(!bioskey(1));

c.i=bioskey(0);//read the key

//reset the selection to normal video

goto_xy(x+arrow_choice,y);

write_video(x+arrow_choice,y,menu[arrow_choice],NORM_VID);

if(c,ch[0]){/is normal key //see if it is a hot key/

key_choice=is_in(keys,tolower(c.ch[]));

if(key_choice)return key_choice-1;

//check for enter or space bar

switch(c.ch[0])

{case’\r’:return arrow_choice;

case’ ‘ :arrow_choice++;

break;case ESC:return-1;//cancel

}

}

else{//is special key

swith(c.ch[1])

{case 72:arrow_choice-;break;

case 80;arrow_choice++;break;

}

}

if(arrow_choice==count)arrow_choice=0;

if(arrow_choice0)arrow_choice=count-1;

goto_xy(x+arrow_choice,y);

write_video(x+arrow_choice,y,menu[arrow_choice],REV_VID);

}

}//其中的REV_VID7黑底白字,NORM_VID70H白字黑底 ESC退出键

void write_video(intx,y,char*p,int attrib)//在指定位置显示指定属性的字符串

{union REGS r;

register int i,j;

for(i=y;*;i++)

{ goto_xy(x,i);

r.h.ah=9;

r.h.bh=0;

r.x.cx=1;

r.h.al=*p++;

r.h.bl=attrib;

int86(0x10,r,r);

}

}

//is_in 返回指定键在热键中的位置 没在就返回0

int is_in(char *s,char c)

{

register int i;

for(i=0;*s;i++)if(*s++==c)reurn i+1;

return 0;

}

C语言如何创建窗口

windows下通过调用API来创建窗口:

#includewindows.h

int main()

{

MessageBox(NULL,”Hello World!”,”C图形程序”,MB_OK);

return 0;

}

linux下通过调用图形库来创建窗口。

楼主如果是学C的话,先不要急于搞这些东西,把基础打扎实才是最重要的,GUI可以后学。基础扎实了,这些只是很简单的东西。

用c语言怎么创建一个窗口?

通过调用windows API来创建窗口:

#includewindows.h

int main()

{

MessageBox(NULL,”Hello World!”,”C图形程序”,MB_OK);

return 0;

}

这个是最简单的了 

至于MFC  QT 什么的 代码太多了

c语言中 窗口 dc是什么意思

device context的缩写,翻译成中文是设备上下文,或者叫设备内容

这个应该是在Windows Programming里面用到的吧

详细如下:

作为C语言,如果要在Windows环境绘图,那么就要自己动手实现显卡驱动,显示器驱动……微软为了方便程序员编程,将各种与绘图相关的数据封装在DC这种数据结构中。程序员调用这种数据,由系统自动获取硬件的信息,然后自动填充DC这种结构体。

这样很方便。当然,如果你想自己把涉及到的硬件驱动自己亲自写一遍,也是可以的,不过……是个很艰巨的任务。。

怎么用C语言编写一个windows窗口?

调用window库窗口函数即可创建windows窗口。

必须使用windows的编译器,如VC,MS等等。

RegisterClassEx函数:

该函数注册在随后调用CreateWindow函数和CreateWindowEx函数中使用的窗口类。 RegisterClass函数己经由函数RegisterClassEx函数来代替,但是,如果不需要设置类的小目标则仍然可以使用RegisterClass函数。

CreateWindowEx函数:

该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同。关于创建窗口和其他参数的内容,请参看CreateWindow。具体仍可见微软的msdn。

消息处理函数WindowProc:

该函数是一个应用程序定义的函数。它处理发送给窗口的消息。WINDPROC类型定义了一个指向该回调函数的指针。WindowProc是用于应用程序定义函数的占位符。

函数原型:

LRESULT CALLBACK WindowProc (HWND hwnd,

UINT uMsg,

WPARAM wParam,

LPARAM lParam);

参数:

hwnd:指向窗口的句柄。

uMsg:指定消息类型。

wParam:指定其余的、消息特定的信息。该参数的内容与UMsg参数值有关。

IParam:指定其余的、消息特定的信息。该参数的内容与uMsg参数值有关。

返回值:返回值就是消息处理结果,它与发送的消息有关。

一个简单的Window的代码如下:

#include Windows.h

#include tchar.h

LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

int WinMain( 

    __in HINSTANCE hInstance, 

    __in_opt HINSTANCE hPrevInstance, 

    __in LPSTR lpCmdLine, 

    __in int nShowCmd 

    )

{

    TCHAR *szName = _T(“myWindow”);

    WNDCLASSEX wc = {0};

    HWND hWnd     = NULL;

    MSG Msg       = {0};

    wc.cbClsExtra    = 0;

    wc.cbWndExtra    = 0;

    wc.cbSize        = sizeof(WNDCLASSEX);

    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//通过函数来设置一个白色的背景,这里大家设置为NULL看看,会很有趣的

    wc.hCursor       = NULL;//不设置

    wc.hIcon         = NULL;//不设置

    wc.hIconSm       = NULL;//不设置

    wc.hInstance     = hInstance;//当前程序的句柄,hInstance是有系统给传递的

    wc.lpfnWndProc   = WinProc;//窗口处理过程的回调函数。

    wc.lpszClassName = szName;//窗口类的名字。

    wc.lpszMenuName  = NULL; 

    wc.style         = CS_HREDRAW | CS_VREDRAW; 

    RegisterClassEx(wc);//在系统中注册

    hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T(“我的窗口我喜欢”),WS_OVERLAPPEDWINDOW,

        200,100,600,400,NULL,NULL,hInstance,NULL);//创建窗口,窗口标题为”我的窗口我喜欢”

    if(hWnd == NULL)

    {

        MessageBox(NULL,_T(“There’s an Error”),_T(“Error Title”),MB_ICONEXCLAMATION|MB_OK);

        return 0;

    }

    ShowWindow(hWnd,nShowCmd);//显示窗口

    UpdateWindow(hWnd);

    //下面是对消息的循环处理,大家先不必管这些,下节课我会细说的

    while(GetMessage(Msg,NULL,0,0))

    {

        TranslateMessage(Msg);//翻译消息

        DispatchMessage(Msg);//分派消息

    }

    return Msg.message;

}

//消息处理函数

LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)

{

    switch(Msg)//处理消息过程

    {

    case WM_DESTROY://响应鼠标单击关闭按钮事件

        PostQuitMessage(0);//退出消息队列

        return 0;//退出函数

    }

    return DefWindowProc(hWnd,Msg,wParam,lParam);

}

原创文章,作者:ELGJ,如若转载,请注明出处:https://www.506064.com/n/145127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ELGJELGJ
上一篇 2024-10-26 11:55
下一篇 2024-10-26 11:55

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python如何打开窗口

    Python是一种高级编程语言,它是可扩展性、可移植性和可读性极佳的语言,被广泛应用于各个领域。在图像处理和GUI方面,Python也有很多优秀的库和工具。本文将介绍如何使用Pyt…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • exzwm:让Emacs更像窗口管理器

    exzwm是一个Emacs扩展,它提供了窗口管理器的功能,让你可以使用Emacs来管理窗口,而不是使用独立的窗口管理器。通过exzwm,你可以为你的Emacs设置类似i3或xmon…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28

发表回复

登录后才能评论