*チャットウィンドウ **メッセージ表示部 ***自分が入力した文字, ルームメンバーが入力した文字を表示 ***名前 → メッセージと名前をセットで表示 **メッセージ入力部 ***テキストボックス → ルームメンバーと会話したい内容を入力 ***送信ボタン → 文字がサーバーに送信され, ルームメンバーのメッセージ表示部に表示 ***エンターキー → 文字がサーバーに送信され, ルームメンバーのメッセージ表示部に表示 ***スクロールバー → ウインドウ内で収まりきらない会話内容を、必要に応じて表示領域を移動し て確認できる。 !!!chat.h
#ifndef CHAT_H #define CHAT_H #include!!!cb_events.htypedef struct chat_widgets_type{ GtkWidget *window; GtkWidget *hbox; GtkWidget *vbox; GtkWidget *button; GtkWidget *scrolled_window1; GtkWidget *scrolled_window2; GtkWidget *entry; GtkWidget *canvas; GIOChannel *my_channel; //GIOChannel *your_channel; gchar name[32]; } chat_widgets; #define HOST_NUM 10 struct message { gboolean is_msg; gchar name[32]; gchar hostname[16]; gchar next_hostname[16]; gchar text_msg[1024]; }; extern char messages[64][256]; extern int line; extern gchar next_hostname[32]; extern const gchar* my_name; extern int next_fd; extern gboolean is_host; int chat_main(void); #endif
#ifndef CB_EVETNS #define CB_EVETNS #include!!!output.h// enterを押した時に呼ばれる関数 void cb_entry (GtkEntry *entry, gpointer data); // buttonを押した時に呼ばれる関数 void cb_button (GtkButton *button, gpointer data); // 画面を再描画する必要があるときに呼ばれる関数 gboolean cb_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer data); #endif
#ifndef OUTPUT_H #define OUTPUT_H #include#include "chat.h" // cb関数からテキストと構造体widgetsを受け取ってcanvasへ表示 void cairo_output (gpointer data, struct message msg); #endif