终于会写makefile 了。晒一个gtk连接数据库的登录窗口程序

cone.h:

 

//gcc -g -Wall -o login login.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient `pkg-config --cflags --libs gtk+-2.0`
#include<gtk/gtk.h>

#include<mysql.h>
#define MYSQL_PORT 3306

MYSQL *myconnect=NULL;
//gboolean connect=FALSE;
static GtkWidget *entry1;
static GtkWidget *entry2;
static GtkWidget *mlabel=NULL;
gboolean my_connect1(gchar *usernam,gchar *passwor)
{
  gchar *query_buf ="USE ourdb1";
  myconnect=mysql_init(myconnect);
  if(mysql_real_connect(myconnect,"localhost",usernam,passwor,"ourdb1",MYSQL_PORT,NULL,0))//ourdb1是我建立的数据库
    {
      if(mysql_query(myconnect,query_buf)==0)
    {
      return TRUE;
        }
      else
    {
      return FALSE;
        }   
    }else
    {
      myconnect=NULL;
      return FALSE;
    }
 
}

void on_button_clicked(GtkWidget *button,gpointer data)//输入用户名和密码了。
{
  const gchar *username=gtk_entry_get_text(GTK_ENTRY(entry1));
  const gchar *password=gtk_entry_get_text(GTK_ENTRY(entry2));
  if(my_connect1(username,password))
   {
    gtk_label_set_text(GTK_LABEL(mlabel),"可以进入了");
//    connect=TRUE;

 //   show_credits();
   }
   else
   {
    gtk_label_set_text(GTK_LABEL(mlabel),"密码或用户名错误");
   }
 
}

GtkWidget *create_log()
{
  GtkWidget *window;
  GtkWidget *vbox,*hbox;
  GtkWidget *box1;
  GtkWidget *box2;
  GtkWidget *label1;
  GtkWidget *label2;
  GtkWidget *button;
  GtkWidget *sep,*viewport;
 
 
  window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
  g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
  gtk_window_set_title(GTK_WINDOW(window),"land window");
  gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  gtk_container_set_border_width(GTK_CONTAINER(window),25);

  vbox=gtk_vbox_new(FALSE,0);
  gtk_container_add(GTK_CONTAINER(window),vbox);
  box1=gtk_hbox_new(FALSE,0);
  gtk_box_pack_start(GTK_BOX(vbox),box1,FALSE,FALSE,5);
  box2=gtk_hbox_new(FALSE,0);
  gtk_box_pack_start(GTK_BOX(vbox),box2,FALSE,FALSE,5);
  

  label1=gtk_label_new("用户名: ");
  gtk_box_pack_start(GTK_BOX(box1),label1,FALSE,FALSE,5);
  entry1=gtk_entry_new();
  gtk_box_pack_start(GTK_BOX(box1),entry1,FALSE,FALSE,5);

  label2=gtk_label_new("  密码:  ");
  entry2=gtk_entry_new();
  gtk_entry_set_visibility(GTK_ENTRY(entry2),FALSE);
  gtk_box_pack_start(GTK_BOX(box2),label2,FALSE,FALSE,5);
  gtk_box_pack_start(GTK_BOX(box2),entry2,FALSE,FALSE,5);
 
 
  viewport=gtk_viewport_new(NULL,NULL);
  gtk_box_pack_start(GTK_BOX(vbox),viewport,FALSE,FALSE,5);
  mlabel=gtk_label_new(NULL);
  gtk_container_add(GTK_CONTAINER(viewport),mlabel);
  sep=gtk_hseparator_new();//
    gtk_box_pack_start(GTK_BOX(vbox),sep,FALSE,FALSE,5);

  hbox=gtk_hbox_new(FALSE,0);
  gtk_container_add(GTK_CONTAINER(vbox),hbox);
  button=gtk_button_new_with_label("教师登录");
  g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),NULL);// show_credits
//===================================================================================
 
//  g_signal_connect_swapped(G_OBJECT(window),"clicked",G_CALLBACK(gtk_widget_destroy),window);
  gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,5);
  button=gtk_button_new_with_label("同学登录");
  g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),NULL);
  gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,5);
 button=gtk_button_new_with_label("    取消    ");
  g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(gtk_main_quit),NULL);
  gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,5);
  gtk_widget_show_all(window);
  return window;

}

 

 

main.c:

 

#include<gtk/gtk.h>
#include<mysql.h>
#include"conet.h"
int main(int argc,char *argv[])
{
   GtkWidget *window;
   gtk_init(&argc,&argv);
   window=create_log();
  gtk_main();
  return FALSE;
}

 

makefile:

LIB = -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
all:main.o
    gcc -g -Wall -o main main.o $(LIB) `pkg-config --cflags --libs gtk+-2.0`
main.o:main.c conet.h
    gcc -c main.c $(LIB) `pkg-config --cflags --libs gtk+-2.0`
clean:
    rm -r *.o

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值