精华内容
下载资源
问答
  • #pragma comment(linker,"/SUBSYSTEM:Windows /ENTRY:mainCRTStartup")#include/* 使类名成为全局变量 */TCHAR szClassName[ ] = TEXT("WindowsApp");/* 这个函数由Windows内部函数DispatchMessage()调用 */LRESULT ...

    #pragma comment(linker,"/SUBSYSTEM:Windows  /ENTRY:mainCRTStartup")

    #include

    /* 使类名成为全局变量 */

    TCHAR szClassName[ ] = TEXT("WindowsApp");

    /* 这个函数由Windows内部函数DispatchMessage()调用 */

    LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

    {

    HDC hdc ;

    PAINTSTRUCT ps ;

    RECT rect ;

    switch (message)  /* 处理信息 */

    {

    case WM_DESTROY:

    PostQuitMessage (0);  /* 发送WM_QUIT到消息队列 */

    break;

    case WM_PAINT:

    hdc = BeginPaint (hWnd, &ps) ;

    GetClientRect (hWnd, &rect) ;

    DrawText (hdc, TEXT("Hello, Windows NT!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

    EndPaint (hWnd, &ps) ;

    break ;

    default:  /* 不处理的消息 */

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

    }

    return 0;

    }

    /* 下面是主函数 */

    int main ( void )

    {

    HINSTANCE hThisInstance = GetModuleHandle(NULL) ;

    int nFunsterStil = SW_SHOW ;

    HWND hWnd; /* 这是窗口的句柄 */

    MSG messages;/* 应用程序的消息保存在这里 */

    WNDCLASSEX wincl;/* 窗口类的数据结构 */

    /* 窗口结构 */

    wincl.hInstance = hThisInstance;

    wincl.lpszClassName = szClassName;

    wincl.lpfnWndProc = WindowProcedure;/* 这个函数由Windows操作系统调用 */

    wincl.style = CS_DBLCLKS; /* 获取双击指令 */

    wincl.cbSize = sizeof (WNDCLASSEX);

    /* 使用默认图标和鼠标指针 */

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

    wincl.lpszMenuName = NULL; /* 没有菜单 */

    wincl.cbClsExtra = 0;/* 窗口类后面没有多余的字节 */

    wincl.cbWndExtra = 0;/* 结构或者窗口实例 */

    /* 使用窗口的默认颜色作为窗口的背景色 */

    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* 注册窗口类。如果注册失败,那么就退出程序 */

    if (!RegisterClassEx (&wincl))

    return 0;

    /* 窗口类已被注册。创建它的程序 */

    hWnd = CreateWindowEx (

    0,

    szClassName,    /* 类名 */

    TEXT("Windows App"),    /* 窗口标题栏的文字 */

    WS_OVERLAPPEDWINDOW, /* 默认窗口 */

    CW_USEDEFAULT, /* 窗口左上角的位置 */

    CW_USEDEFAULT, /* 窗口右下角的位置 */

    300, /* 窗口宽度(以“像素”位单位) */

    300, /* 窗口高度(以“像素”位单位) */

    HWND_DESKTOP,/* 窗口是桌面的子窗口 */

    NULL,/* 该窗口无菜单 */

    hThisInstance, /* 程序实例的句柄 */

    NULL /* 没有窗口创建的数据 */

    );

    /* 显示窗口 */

    ShowWindow (hWnd, nFunsterStil);

    /* 重绘窗口 */

    UpdateWindow(hWnd);

    /* 运行消息循环。循环到GetMessage()函数返回0 */

    while (GetMessage (&messages, NULL, 0, 0))

    {

    /* 把虚拟信息翻译成字符信息 */

    TranslateMessage(&messages);

    /* 发送信息到窗口过程 */

    DispatchMessage(&messages);

    }

    /* 返回PostQuitMessage()函数的返回值 */

    return messages.wParam;

    }

    展开全文
  • //下面三行函数设计箱子的位置并打印出来 putimage(350,596-400,&Case); putimage(350,596-200,&Case); } void playgame(int heng, int zhong)//这个函数主要的作用是用来控制小鸟 { int x=heng,y=zhong; //用x,y...

    #include //导入声音头文件

    #pragma comment(lib,"Winmm.lib")

    /*

    1.主要思路先想好地图的每个建筑像素大小 ,位置用坐标定位 比如 map()

    2.要控制哪些物体,写一个单独的函数去控制要移动的物体 比如 playgame()

    3.找到游戏的逻辑

    4.用一个死循环消除上次控制的物体的位置 比如 while(1)

    */

    IMAGE bird, Case,SKY,land; //定义4张存图片的变量

    void map ()//这个函数主要的作用是加载出来地图

    {

    initgraph(795,596);//创建一个游戏的窗口

    loadimage(&bird,_T("D:\\22.jpg"),40,40, false); //把鸟的图片地址存储到brid地址中

    loadimage(&Case,_T("D:\\11.jpg"),50,50, false); //把箱子的图片地址存储到Case地址中

    loadimage(&SKY,_T("D:\\SKY.jpg"),40,40,false);//把天空的图片地址存储到SKY地址中

    loadimage(&land,_T("D:\\77.jpg"),40*40,false);//把土地的图片地址存储到land地址中

    for(int i =0; i<=794;)

    {

    for(int y=0;y<=759;)

    {

    putimage(i,y,&SKY); //把天空图片打印出来

    y+=40 ;

    }

    i+=40;

    }

    for(int h =0; h<=759;)

    {

    putimage(h,596-50,&land);//把土地打印出来

    h+=40;

    }

    putimage(200,596-110,&Case); //下面三行函数设计箱子的位置并打印出来

    putimage(350,596-400,&Case);

    putimage(350,596-200,&Case);

    }

    void playgame(int heng, int zhong)//这个函数主要的作用是用来控制小鸟

    {

    int x=heng,y=zhong; //用x,y接收它的横坐标和纵坐标

    putimage(x,y,&bird); //把小鸟按(x,y)的坐标位置打印出来

    }

    void main()

    {

    PlaySound("D:\\1.mp3",NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);//加载背景音乐

    int x=80, y=596-440; //定义初始鸡的位置

    char c=getch(); //吸收缓存防止出现错误

    while(1)//永远为真使其永远运行反复加载游戏画面

    {

    map();//加载游戏地图

    playgame(x,y);//加载鸡的位置

    c=getch();//从键盘上接收一个字符

    switch (c)//这个开关用来控制鸡的移动

    {

    case 'w' : y=y-40;break;

    case 's': y=y+40;break;

    case 'a': x=x-40;break;

    case 'd': x=x+40;break;

    }

    //用'w','s','a','d',来改变小鸡的横纵坐标从而使它实现移动

    system("cls");//清楚屏幕(可以不需要)

    }

    }

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。

    本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大家分享:

    acbec432f0fe38f3ba8eaec10217c494.png

    主界面程序gmaxtrix.c

    #include

    #include"client_socket.h"

    #define MAX_BUFFER 1024

    static GtkWidget *IP_entry;

    static GtkWidget *port_entry;

    static gint sockfd;

    static gint tag;

    gchar buffer[MAX_BUFFER];

    void g_show_alarm_dialog(const gchar *message){

    GtkWidget *dialog;

    dialog = gtk_message_dialog_new(NULL,

    GTK_DIALOG_DESTROY_WITH_PARENT,

    GTK_MESSAGE_WARNING,

    GTK_BUTTONS_OK,

    "%s",message);

    gtk_window_set_title(GTK_WINDOW(dialog),"警告");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    }

    void g_client_send(GtkWidget *widget, gpointer textbuffer){

    if (sockfd > 0){

    client_send(sockfd, gtk_entry_buffer_get_text(GTK_ENTRY_BUFFER(textbuffer)), gtk_entry_buffer_get_bytes(GTK_ENTRY_BUFFER(textbuffer)));

    }else{

    g_show_alarm_dialog("未连接到中控主机");

    }

    }

    void g_client_recv(gpointer data, gint source, GdkInputCondition condition){

    gint count = client_recv(source, buffer, MAX_BUFFER);

    buffer[count] = 0;

    GtkTextIter iter;

    gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(data),&iter);

    gtk_text_buffer_insert(GTK_TEXT_BUFFER(data),&iter,buffer,-1);

    }

    void g_client_connect(GtkWidget *widget, gpointer date){

    if (sockfd > 0){

    client_close(sockfd);

    gtk_button_set_label(GTK_BUTTON(widget),"连接");

    gdk_input_remove(tag);

    }else{

    sockfd = client_connect(gtk_entry_get_text(GTK_ENTRY(IP_entry)),atoi(gtk_entry_get_text(GTK_ENTRY(port_entry))));

    gtk_button_set_label(GTK_BUTTON(widget),"断开");

    tag = gdk_input_add(sockfd, GDK_INPUT_READ, g_client_recv,date);

    }

    }

    int main(int argc, char *argv[]){

    gtk_init(&argc, &argv);

    GtkWidget *window;

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit),NULL);

    gtk_widget_set_size_request(window, 260, 250);

    gtk_container_set_border_width(GTK_CONTAINER(window),5);

    GtkWidget *vbox;

    vbox = gtk_vbox_new(FALSE,1);

    gtk_container_add(GTK_CONTAINER(window),vbox);

    GtkWidget *hbox1;

    hbox1 = gtk_hbox_new(FALSE,1);

    gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE ,0);

    GtkWidget *table = gtk_table_new(2,2,FALSE);

    gtk_box_pack_start(GTK_BOX(hbox1), table, TRUE , TRUE , 0);

    GtkWidget *IP_label = gtk_label_new("地址:");

    gtk_table_attach_defaults(GTK_TABLE(table),IP_label,0,1,0,1);

    IP_entry = gtk_entry_new();

    gtk_table_attach_defaults(GTK_TABLE(table),IP_entry,1,2,0,1);

    GtkWidget *port_label = gtk_label_new("端口:");

    gtk_table_attach_defaults(GTK_TABLE(table),port_label,0,1,1,2);

    port_entry = gtk_entry_new();

    gtk_table_attach_defaults(GTK_TABLE(table),port_entry,1,2,1,2);

    GtkWidget *connect_button = gtk_button_new_with_label("连接");

    gtk_box_pack_start(GTK_BOX(hbox1), connect_button, TRUE, TRUE ,0);

    GtkWidget *hseparator = gtk_hseparator_new();

    gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, FALSE, 0);

    GtkWidget *hbox2;

    hbox2 = gtk_hbox_new(FALSE,1);

    gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE ,0);

    GtkWidget *send_entry = gtk_entry_new();

    gtk_box_pack_start(GTK_BOX(hbox2), send_entry, TRUE, TRUE ,0);

    GtkWidget *send_button = gtk_button_new_with_label("发送");

    gtk_box_pack_start(GTK_BOX(hbox2), send_button, TRUE, TRUE ,0);

    g_signal_connect(send_button, "clicked", G_CALLBACK(g_client_send), gtk_entry_get_buffer(GTK_ENTRY(send_entry)));

    GtkWidget *recv_text = gtk_text_view_new();

    gtk_box_pack_start(GTK_BOX(vbox), recv_text, TRUE, TRUE, 0);

    g_signal_connect(connect_button, "clicked", G_CALLBACK(g_client_connect), gtk_text_view_get_buffer(GTK_TEXT_VIEW(recv_text)));

    gtk_widget_show_all(window);

    gtk_main();

    return 0;

    }

    后台网络通迅模型接口声明client_socket.h

    #ifndef CLIENT_SOCKET_H

    #define CLIENT_SOCKET_H

    int client_connect(const char *IP, const int port);

    void client_close(int sockfd);

    void client_send(int sockfd,const unsigned char *buffer, const size_t count);

    size_t client_recv(int sockfd,unsigned char *buffer,size_t count);

    #endif

    后台网络通迅模型实现client_socket.c(采用POSIX接口,WIN下需改为win32API接口)

    #include

    #include

    #include

    #include

    #include

    #include

    #include "client_socket.h"

    int client_connect(const char *IP, const int port){

    static struct sockaddr_in servaddr;

    int sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr, sizeof(servaddr));

    servaddr.sin_family = AF_INET;

    inet_pton(AF_INET, IP, &servaddr.sin_addr);

    servaddr.sin_port = htons(port);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    return sockfd;

    }

    void client_close(int sockfd){

    close(sockfd);

    }

    void client_send(int sockfd,const unsigned char *buffer, const size_t count){

    send(sockfd,buffer,count,0);

    }

    size_t client_recv(int sockfd,unsigned char *buffer,size_t count){

    return recv(sockfd,buffer,count,0);

    }

    编译脚本makefile

    gmaxtrix: gmaxtrix.o client_socket.o

    gcc gmaxtrix.o client_socket.o -o gmaxtrix `pkg-config --cflags --libs gtk+-2.0`

    gmaxtrix.o: gmaxtrix.c client_socket.h

    gcc -c gmaxtrix.c `pkg-config --cflags --libs gtk+-2.0`

    client_socket.o: client_socket.h client_socket.c

    gcc -c client_socket.c `pkg-config --cflags --libs gtk+-2.0`

    clean:

    @echo "cleanning project"

    -rm gmaxtrix *.o

    @echo "clean completed"

    展开全文
  • //初始化图形界面 IMAGE Img1;//声明一个IMAGE变量 IMAGE Img2(640,480);//声明一个IMAGE变量 char input1[LEN_A];//用于接收输入的字符串 char input2[LEN_P];//用于接收输入的字符串 int j; InputAPword account; ...

    #include#define LEN_A 20//账户长度

    #define LEN_P 10//密码长度

    typedef struct Account

    {

    char name[20];

    long int password;

    }InAccount;

    typedef struct inputAPword

    {

    InAccount account;

    int flag;

    }InputAPword;

    void inputbox(void);

    void cursor(void);

    void cursor2(void);

    void name(void);

    int MouseEvent(IMAGE);

    InputAPword menu2(void)

    {

    initgraph(640,480);//初始化图形界面

    IMAGE Img1;//声明一个IMAGE变量

    IMAGE Img2(640,480);//声明一个IMAGE变量

    char input1[LEN_A];//用于接收输入的字符串

    char input2[LEN_P];//用于接收输入的字符串

    int j;

    InputAPword account;

    loadimage(&Img1,_T("girl4.bmp"));//加载图片

    SetWorkingImage(&Img1);//设置当前绘图设备为Img1

    setlinestyle(PS_SOLID, NULL, 2);//设置线的样式

    setfont(64,0,"华文隶书");//设置字体的样式和大小

    settextcolor(RGB(134,0,255));//设置字体的颜色

    setlinecolor(RGB(16,16,16));//设置线的颜色

    setbkmode(TRANSPARENT);//设置字体的背景为透明

    outtextxy(50,50,_T("A 用户登录"));//显示汉字

    settextcolor(RGB(0,0,0));//设置字体的颜色

    rectangle(50,150,350,340);//画矩形框

    rectangle(254,515,302,585);//画一个矩形框

    fillrectangle(100,280,173,315);//登录框

    fillrectangle(223,280,296,315);//取消框

    SetWorkingImage();//恢复当前绘图设备为默认设备

    putimage(0,0,&Img1);//显示图片

    do{

    name();//显示文字信息

    setbkmode(OPAQUE);//设置字体背景为默认

    setbkcolor(RGB(255,255,255));

    cursor();//显示输入框以及闪烁的光标

    for(j=0;LEN_A;j++){//限制输入,最多允许输入LNE位数据

    input1[j]=getch();//读取键盘输入的字符并存入数组

    outtextxy(161+8*j,193,input1[j]);//将字符显示在图片上

    if(input1[j]==8){//按删除键时的操作

    input1[j-1]=0;//字符数组内容删除一位

    outtextxy(161+8*j,193," ");//将字符遮掩

    outtextxy(161+8*(j-1),193," ");//将字符遮掩

    j -=2;//数组坐标后退两个

    if(j<=-1){//当回退到头时的处理

    input1[0]=\0;//对数组进行标记

    break;//退出本次输入

    }

    continue;

    }else if(input1[j]==13){//按回车键时的处理

    input1[j]=\0;//将数组的最后一个数据标记为\0

    if(j==0){//无任何输入,且按下回车时的处理

    outtextxy(161+8*j,193," ");//将回车显示的字符遮掩

    outtextxy(161+8*(j-1),193," ");//将回车显示的字符遮掩

    input1[0]=\0;//对数组进行进行标记

    }

    break;//退出本次输入

    }

    }

    setbkmode(OPAQUE);//设置字体背景为默认

    setbkcolor(RGB(255,255,255));

    cursor2();//光标聚到下一个输入框的开始位置

    for(j=0;j=100&&m.x<=173)&&(m.y>=280&&m.y<=315)){//对鼠标的X,Y坐标进行判断

    SetWorkingImage(&Img);//设置当前的绘图设备

    setlinestyle(PS_SOLID,NULL,2);

    setlinecolor(RGB(252,15,0));//线的颜色,红色

    settextcolor(RGB(252,15,0));//字体颜色,红色

    setfont(25,0,"宋体");//设置字体的大小和样式

    setbkmode(TRANSPARENT);

    fillrectangle(100,280,173,315);//登录框

    outtextxy(111,285,_T("登录"));

    SetWorkingImage();//恢复当前的绘图设备

    putimage(0,0,&Img);//显示当前的图画

    }else if((m.x>=223&&m.x<=296)&&(m.y>=280&&m.y<=315)){//对鼠标的X,Y坐标进行判断

    SetWorkingImage(&Img);//设置当前的绘图设备

    setlinestyle(PS_SOLID,NULL,2);

    setlinecolor(RGB(252,15,0));//线的颜色,红色

    settextcolor(RGB(252,15,0));//字体颜色,红色

    setfont(25,0,"宋体");//设置字体的大小和样式

    setbkmode(TRANSPARENT);

    fillrectangle(223,280,296,315);//取消框

    outtextxy(234,285,_T("取消"));

    SetWorkingImage();//恢复当前的绘图设备

    putimage(0,0,&Img);//显示当前的图画

    }else{

    SetWorkingImage(&Img);//设置当前的绘图设备

    setlinecolor(RGB(134,0,255));//设置线的颜色

    settextcolor(RGB(134,0,255));//字体颜色,黑色

    fillrectangle(100,280,173,315);//登录框

    fillrectangle(223,280,296,315);//取消框

    setbkcolor(RGB(255,255,255));///字体背景色,白色

    setfont(25,0,"宋体");//设置字体的大小和样式

    outtextxy(111,285,_T("登录"));

    outtextxy(234,285,_T("取消"));

    SetWorkingImage();//恢复当前绘图设备为默认设备

    putimage(0,0,&Img);

    }

    break;

    }

    case WM_LBUTTONDBLCLK://鼠标双击左键时的信息

    {

    if((m.x>=100&&m.x<=173)&&(m.y>=280&&m.y<=315)){//登陆按键范围

    value=1;

    }else if((m.x>=223&&m.x<=296)&&(m.y>=280&&m.y<=315)){//取消按键范围

    value=2;

    }

    break;

    }

    }

    }

    return value;//返回值

    }

    void main()

    {

    long int a;

    InputAPword account;

    account = menu2();

    a = account.account.password;

    system("cls");

    printf("这是测试的密码:%ld",a);

    printf("%s",account.account.name);

    getchar();

    getchar();

    }

    展开全文
  • #include int main(){file *fp=fopen("save.txt","w+");char *p=null;char str[5][20];for(int i=0;i<5;i++){scanf("%s",str[i]);p=str[i];while(*p!='\0'){fputc(*p,fp);putchar(*p);...fp=fopen(...
  • 关于C语言图形化界面编程第一个小程序《飞翔的小鸟》效果图本人也是小白,大家轻点喷!!!!下面是源码作者: @追风#include#include#include#include //导入声音头文件#pragma comment(lib,"Winmm.lib")/*1.主要...
  • GTK就可以,一个基于C语言的免费、开源、跨平台图形工具包,可以直接使用C语言调用实现图形界面开发,下面我简单介绍一下这个工具包的安装和使用,这里以Windows平台为例:1.首先,下载GTK安装包,这个可以直接到...
  • //初始化图形界面 IMAGE Img1;//声明一个IMAGE变量 IMAGE Img2(640,480);//声明一个IMAGE变量 char input1[LEN_A];//用于接收输入的字符串 char input2[LEN_P];//用于接收输入的字符串 int j; InputAPword account; ...
  • (以下函数均应在图形方式初始之后使用(initgraph(a,b)),在win-tc中使用BGI图形程序模板时,其中已经定义有一个initgr函数,在main函数中应在执行initgr函数之后再使用这些函数。使用这些函数时,均应在程序中包含...
  • 2018一种基于可视化界面绘制图形自动生成C 语言代码软件的设计与实现宋雅娟1 冯 萍21 ( 苏州市职业大学计算机工程学院 江苏 苏州 215104)2 ( 长春大学计算机科学技术学院 吉林 长春 130022)收稿日期: 20...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,095
精华内容 17,238
关键字:

c语言图形化界面设计

c语言 订阅