怎样用c语言写一个图形界面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用c语言写一个图形界面相关的知识,希望对你有一定的参考价值。

代码

#include <windows.h>


LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;        //声明用来处理消息的函数


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )

static TCHAR szAppName[] = TEXT("MyWindow") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;        //声明一个窗口类对象


//以下为窗口类对象wndclass的属性

wndclass.style = CS_HREDRAW | CS_VREDRAW ;                         //窗口样式

wndclass.lpszClassName = szAppName ;                               //窗口类名

wndclass.lpszMenuName = NULL ;                                     //窗口菜单:无

wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ;    //窗口背景颜色

wndclass.lpfnWndProc = WndProc ;                                   //窗口处理函数

wndclass.cbWndExtra = 0 ;                                          //窗口实例扩展:无

wndclass.cbClsExtra = 0 ;                                          //窗口类扩展:无

wndclass.hInstance = hInstance ;                                   //窗口实例句柄

wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ) ;               //窗口最小化图标:使用缺省图标

wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ;                 //窗口采用箭头光标


if( !RegisterClass( &wndclass ) )

   //注册窗口类, 如果注册失败弹出错误提示

MessageBox( NULL, TEXT("窗口注册失败!"), TEXT("错误"), MB_OK | MB_ICONERROR ) ;

return 0 ;


hwnd = CreateWindow(                   //创建窗口

szAppName,                 //窗口类名

TEXT("我的窗口"),           //窗口标题

WS_OVERLAPPEDWINDOW,       //窗口的风格

CW_USEDEFAULT,             //窗口初始显示位置x:使用缺省值

CW_USEDEFAULT,             //窗口初始显示位置y:使用缺省值

CW_USEDEFAULT,             //窗口的宽度:使用缺省值

CW_USEDEFAULT,             //窗口的高度:使用缺省值

NULL,                      //父窗口:无

NULL,                      //子菜单:无

hInstance,                 //该窗口应用程序的实例句柄 

NULL                       //

) ;

ShowWindow( hwnd, iCmdShow ) ;        //显示窗口

UpdateWindow( hwnd ) ;                //更新窗口

while( GetMessage( &msg, NULL, 0, 0 ) )        //从消息队列中获取消息

TranslateMessage( &msg ) ;                 //将虚拟键消息转换为字符消息

DispatchMessage( &msg ) ;                  //分发到回调函数(过程函数)

return msg.wParam ;


LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )

HDC hdc ;                //设备环境句柄

PAINTSTRUCT ps ;         //绘制结构

RECT rect;               //矩形结构

switch( message )        //处理得到的消息

case WM_CREATE:          //窗口创建完成时发来的消息

MessageBox( hwnd, TEXT("窗口已创建完成!"), TEXT("我的窗口"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

case WM_PAINT:           //处理窗口区域无效时发来的消息

hdc = BeginPaint( hwnd, &ps ) ;

GetClientRect( hwnd, &rect ) ;

DrawText( hdc, TEXT( "Hello, 卫班科技!" ), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER ) ;

EndPaint( hwnd, &ps ) ;

return 0 ;

case WM_LBUTTONDOWN:     //处理鼠标左键被按下的消息

MessageBox( hwnd, TEXT("鼠标左键被按下。"), TEXT("单击"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

case WM_DESTROY:         //处理窗口关闭时的消息

MessageBox( hwnd, TEXT("关闭程序!"), TEXT("结束"), MB_OK | MB_ICONINFORMATION ) ;

PostQuitMessage( 0 ) ;

return 0;

return DefWindowProc( hwnd, message, wParam, lParam ) ;        //DefWindowProc处理我们自定义的消息处理函数没有处理到的消息

参考技术A c语言编程有窗口程序与控制台程序,窗口的就是windows编程,要用,控制台即dos式的字符界面(字符界面),但若有图形库,也可以写出图形来,tc有图形库,而vc++没有,但为了方便,你可在网上下图形库安装以支持vc++,常见的图形库有ege、easyx等等.......追问

加qq 慢慢请教 2469194208 谢了

追答

抱歉噢,画图板是要很专业的水平的,我对此只算个门外汉........

参考技术B C语言没有图形界面的相关库,但是C语言可以调用系统API来编写图形界面。
在Windows上是调用Win32 SDK来实现图形界面编程的。Linux上可以使用GTK来实现图形界面编程。
对于GTK我不太熟。Win32 SDK也不是几句话就能说清的,我可以给你推荐一本书《Windows程序设计(第5版 珍藏版)》,这本书非常经典,写得也通俗易懂。
参考技术C 图形界面怎么用C语言做呢,直接做一个windows窗体应用不行吗 参考技术D printf语句就可以了
要看画什么图形界面,干什么用追问

就一个画图板 要用windows函数吗

追答

#include
#include
#include
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define UP 0x4800
#define DOWN 0x5000
#define COL 0x2c7a/*z改变色彩*/
#define FIG 0x2d78/*x改变图形*/
#define HOLD 0x1e61/*A握笔提笔*/
#define SPACE 0x3920/*移动速度*/
#define ENTER 0x1c0d/*像cad一样输入命令画图,未完成*/
#define ESC 0x011b/*退出*/
#define LOAD 0x266c/*load存档*/
#define CHANG 57.2957795

/*tc2.0编译*//*c语言画图板*//*能画线、圆、弧、斜椭圆*/

void *pen,*cross;
int x=320,y=210,s[5]=1,2,3,4,5,i,fig=1,col=1,com,m,step,key,ch;
char *textstring="Save or not?y/n";
char *fig1="pixel";
char *fig2="line";
char *fig3="circle";
char *fig4="arc";
char *fig5="ellipse";
char *col0="ERASE";
char *col1="BLUE";
char *col2="GREEN";
char *col3="CYAN";
char *col4="RED";
char *col5="MAGENTA";
char *col6="BROWN";
char *col7="LIGHTGRAY";
char *col8="DARKGRAY";
char *col9="LIGHTBLUE";
char *col10="LIGHTGREEN";
char *col11="LIGHTCYAN";
char *col12="LIGHTRED";
char *col13="LIGHTMAGENTA";
char *col14="YELLOW";
char *col15="WHITE";

struct col
int sav;
;
typedef struct dpcol

char *dpcol;
struct dpcol *next1;
*chead,*dc;
typedef struct dpfig

char *dpfig;
struct dpcol *next2;
*fhead,*df;
void assign()



void init()

int gd=VGA,gm=VGAHI;
initgraph(&gd,&gm,"");
cleardevice();


void info()

void help()

void curs()

int points[12]=320,240,330,235,350,215,345,210,325,230,320,240;
/*moveto(320,240);*/
/*setcolor;*/
/*setlinestyle;*/
drawpoly(6,points);
pen=malloc(imagesize(320,210,350,240));
getimage(320,210,350,240,pen);
setlinestyle(0,0,3);
line(10,50,40,50);
line(25,35,25,65);
cross=malloc(imagesize(10,35,40,65));
getimage(10,35,40,65,cross);
cleardevice();

从控制台输入一个英文句子,用c语言写一个程序判断有几个单词

 1 #include<stdio.h>

  2 #include<vector>

  3 

  4 int main()

  5

  6    

  7 

  8     char  a[100]=0;

        printf("请输入英文\\n");

        //获取一行字符串,默认以enter 键结束

  9      gets(a);

 10     int count=0;

 11     int flag=0;

 12     for(int  i=0;i<strlen(a);i++)

 13    

 14         if((a[i]!=' ')&(a[i]!='\\0'))

 15        

 16             printf("%c",a[i]);

 17             flag=0;

 18        

 19         if(a[i]==' ')

 20        

 21             if(flag==0)

 22            

 23                 printf("\\n");

 24                 count++;

 25                 flag=1;

 26            

 27        

 28 

 29 

 30    

 31     printf("\\n");

 32 //  单词的个数为空格数加1

 33     printf("单词的个数为count=%d\\n",count+1);

 34


[root@squidx ~]# ./a.out

fn   nihao  wohao  dajia        hao

fn

nihao

wohao

dajia

hao

单词的个数为count=5

参考技术A

C语言程序:

#include <stdio.h>
#include <string.h>

#define MAX 1000

int main()

char str[MAX];
int i=0, j, c = 0, len;

printf("请输入字符串:");
gets(str);

len = strlen(str);

while(1)

for(; i<len && str[i]==' '; i++);
for(j=i; j<len && str[j]!=' '; j++);
if(j > i)

i = j;
c++;

if(i >= len || j >= len)
break;


printf("单词数量:%d\\n", c);

return 0;


运行测试:

请输入字符串:How do you do!
单词数量:4

参考技术B #include <stdio.h> 
#include <string.h> 

int a=0;
void main()

    char a[100];
    printf("请输入字符串:");
    gets(a);    
    int i=0;
    for(i=0;i<strlen(a);i++)
        if (a[i]==' ') 
        a++; 
    
    printf("有单词 %d 个\\n",a+1);

参考技术C include <stdio.h>

int main(void)

        int c,state,nw;
        state=0;
        nw=0;
        while((c=getchar())!='\\n') 
                if(c==' '||c=='\\t')
                        state=0;
                else if(state==0) 
                        state=1;
                        nw++;
                
        
        printf("共有%d个单词\\n",nw);
        return 0;

以上是关于怎样用c语言写一个图形界面的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Java的本地方法实现JNI

请问用opencv库开发应用软件,怎么写图形用户界面,如:按钮、复选框、文本框等。

请问用opencv库开发应用软件,怎么写图形用户界面,如:按钮、复选框、文本框等。

怎样用java编写图形界面的Application程序

Linux下,GCC环境,C语言,使用Opencl, 如何做一个有Button的界面?

如何用c语言编写图形操作的软件呢??