?? wordclock.c~
字號:
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>#include <minigui/mgext.h> #include "wordclock.h" #define IDM_Asia 2010#define IDM_Beijing 2011#define IDM_Tokyo 2012#define IDM_NorthAmerica 2020#define IDM_Newyork 2021#define IDM_Europe 2030#define IDM_Rome 2031#define IDM_Berlin 2032#define IDM_Paris 2033#define IDM_London 2034#define IDM_Africa 2040#define IDM_Cairo 2041#define IDM_Oceania 2050#define IDM_Sydney 2051#define IDM_SouthAmerica 2060#define IDM_Brazilia 2061HWND hMainWnd;
static HMENU CreatAsiaMenu(void)
{ HMENU hmenu; //菜單句柄
MENUITEMINFO mii; //MENUITEMINFO 結構是用來操作菜單項的核心數據結構
/* define the "Asia" menu is PopupMenu, and get the PopupMenu point */
memset(&mii, 0, sizeof(MENUITEMINFO)); /* init mii to 0 */
mii.type = MFT_STRING; //普通的文字菜單項
mii.id = 0;
mii.typedata = (DWORD)"Asia"; //菜單項的類型數據,用來傳遞菜單項的文本字符串
hmenu = CreatePopupMenu(&mii); //建 立 空 菜 單 時 要 調 用CreatePopupMenu彈出菜 單函數:
/* creat the "Beijing" */
memset(&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_Beijing; mii.typedata = (DWORD)"Beijing "; InsertMenuItem(hmenu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_Tokyo; mii.typedata = (DWORD)"Tokyo "; InsertMenuItem(hmenu, 1, TRUE, &mii);
return(StripPopupHead(hmenu)); //該函數用來刪除 MiniGUI彈出式菜單的頭部。彈出式菜單的頭部和主窗口的標題欄類似,在調用該函數之后,彈出式菜單的頭部信息就被銷毀了。
}
static HMENU CreatNorthAmericaMenu(void)
{ HMENU hmenu;
MENUITEMINFO mii;
/* define the "NorthAmerica" menu is PopupMenu, and get the PopupMenu point */
memset(&mii, 0, sizeof(MENUITEMINFO)); /* init mii to 0 */
mii.type = MFT_STRING;
mii.id = 0;
mii.typedata = (DWORD)"NorthAmerica";
hmenu = CreatePopupMenu(&mii);
/* creat the "Newyork" */
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.state = 0;
mii.id = IDM_Newyork;
mii.typedata = (DWORD)" Newyork ";
InsertMenuItem(hmenu, 0, TRUE, &mii);
return(StripPopupHead(hmenu));
}
static HMENU CreatEuropeMenu(void)
{ HMENU hmenu;
MENUITEMINFO mii;
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.id = 0;
mii.typedata = (DWORD)"Europe"; hmenu = CreatePopupMenu(&mii);
/* creat the "Rome" */
memset(&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_Rome; mii.typedata = (DWORD)" Rome "; InsertMenuItem(hmenu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_Berlin; mii.typedata = (DWORD)" Berlin "; InsertMenuItem(hmenu, 1, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_Paris; mii.typedata = (DWORD)" Paris "; InsertMenuItem(hmenu, 2, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_London; mii.typedata = (DWORD)" London "; InsertMenuItem(hmenu, 3, TRUE, &mii);
return(StripPopupHead(hmenu)); }
static HMENU CreatAfricaMenu(void)
{ HMENU hmenu;
MENUITEMINFO mii;
memset(&mii, 0, sizeof(MENUITEMINFO)); /* init mii to 0 */
mii.type = MFT_STRING;
mii.id = 0;
mii.typedata = (DWORD)"Africa";
hmenu = CreatePopupMenu(&mii);
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.state = 0;
mii.id = IDM_Cairo;
mii.typedata = (DWORD)" Cairo ";
InsertMenuItem(hmenu, 0, TRUE, &mii);
return(StripPopupHead(hmenu));
}static HMENU CreatOceaniaMenu(void)
{ HMENU hmenu;
MENUITEMINFO mii;
memset(&mii, 0, sizeof(MENUITEMINFO)); /* init mii to 0 */
mii.type = MFT_STRING;
mii.id = 0;
mii.typedata = (DWORD)"Oceania";
hmenu = CreatePopupMenu(&mii);
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.state = 0;
mii.id = IDM_Sydney;
mii.typedata = (DWORD)" Sydney ";
InsertMenuItem(hmenu, 0, TRUE, &mii);
return(StripPopupHead(hmenu));
}static HMENU CreatSouthAmericaMenu(void)
{ HMENU hmenu;
MENUITEMINFO mii;
memset(&mii, 0, sizeof(MENUITEMINFO)); /* init mii to 0 */
mii.type = MFT_STRING;
mii.id = 0;
mii.typedata = (DWORD)" SouthAmerica ";
hmenu = CreatePopupMenu(&mii);
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.state = 0;
mii.id = IDM_Brazilia;
mii.typedata = (DWORD)" Brazilia ";
InsertMenuItem(hmenu, 0, TRUE, &mii);
return(StripPopupHead(hmenu));
}
static HMENU CreateMainMenu(void)
{ HMENU hmenu;
MENUITEMINFO mii;
hmenu = CreateMenu(); //創 建 一 個空的 菜單
/* creat "Asia" menu */
memset(&mii, 0, sizeof(MENUITEMINFO)); /* init mii to 0 */
mii.type = MFT_STRING;
mii.id = IDM_Asia;
mii.typedata = (DWORD)" Asia ";
mii.hsubmenu = CreatAsiaMenu(); /* creat the sub menu */
InsertMenuItem(hmenu, 0, TRUE, &mii);
/* creat "NorthAmerica" menu */
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.id = IDM_NorthAmerica;
mii.typedata = (DWORD)" NorthAmerica ";
mii.hsubmenu = CreatNorthAmericaMenu();
InsertMenuItem(hmenu, 1, TRUE, &mii); /* creat "Europe" menu */
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.id = IDM_Europe;
mii.typedata = (DWORD)" Europe ";
mii.hsubmenu = CreatEuropeMenu();
InsertMenuItem(hmenu, 2, TRUE, &mii); /* creat "Africa" menu */
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.id = IDM_Africa;
mii.typedata = (DWORD)" Africa ";
mii.hsubmenu = CreatAfricaMenu();
InsertMenuItem(hmenu, 3, TRUE, &mii); /* creat "Oceania" menu */
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.id = IDM_Oceania;
mii.typedata = (DWORD)" Oceania ";
mii.hsubmenu = CreatOceaniaMenu();
InsertMenuItem(hmenu, 4, TRUE, &mii); /* creat "SouthAmerica" menu */
memset(&mii, 0, sizeof(MENUITEMINFO));
mii.type = MFT_STRING;
mii.id = IDM_SouthAmerica;
mii.typedata = (DWORD)" SouthAmerica ";
mii.hsubmenu = CreatSouthAmericaMenu();
InsertMenuItem(hmenu, 5, TRUE, &mii);
return(hmenu);
}/*以下代碼用于處理時間*/#define _ID_TIMER_BEIJING 100#define _ID_TIMER_TOKYO 110#define _ID_TIMER_NEWYORK 120#define _ID_TIMER_ROME 130#define _ID_TIMER_BERLIN 140#define _ID_TIMER_PARIS 150#define _ID_TIMER_LONDON 160#define _ID_TIMER_CAIRO 170#define _ID_TIMER_SYDNEY 180#define _ID_TIMER_BRAZILIA 190 #define _ID_TIME_STATIC 100#define _ID_DATE_STATIC 200/*銷毀定時器*//*int kill_time (HDC hdc){ KillTimer (hdc, _ID_TIMER_BEIJING); //銷毀不用的定時器 KillTimer (hdc, _ID_TIMER_TOKYO); KillTimer (hdc, _ID_TIMER_NEWYORK); KillTimer (hdc, _ID_TIMER_ROME); KillTimer (hdc, _ID_TIMER_BERLIN); KillTimer (hdc, _ID_TIMER_PARIS); KillTimer (hdc, _ID_TIMER_LONDON); KillTimer (hdc, _ID_TIMER_CAIRO); KillTimer (hdc, _ID_TIMER_SYDNEY); KillTimer (hdc, _ID_TIMER_BRAZILIA);}*/static int WordclockWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{ HDC hdc; char buff [20]; HWND hDlg,hDlg1;
switch(message)
{ case MSG_CREATE: hDlg = CreateWindow (CTRL_STATIC, "", WS_CHILD | WS_BORDER | WS_VISIBLE | SS_CENTER, _ID_TIME_STATIC, 550, 184, 90, 26, hWnd, 0); hDlg1 = CreateWindow (CTRL_STATIC, "", WS_CHILD | WS_BORDER | WS_VISIBLE | SS_CENTER, _ID_DATE_STATIC, 320, 184, 250, 26, hWnd, 0); //創建顯示日期的靜態控件 /* 創建一個 間隔為 1 秒的定時 器 ,其標 識號為 _ID_TIMER,接收定 時器消 息的窗 口為 hWnd */ SetTimer (hWnd, _ID_TIMER_BEIJING, 100); /*以下四行代碼用于改變時間靜態控件的顏色*/ HWND hwnd = GetDlgItem (hDlg, _ID_TIME_STATIC); gal_pixel pixel = RGB2Pixel (HDC_SCREEN, 0, 0, 255); SetWindowElementColorEx (hwnd, FGC_CONTROL_NORMAL, pixel); UpdateWindow (hwnd, TRUE); /** tty font*/ logfontttf1 = CreateLogFont ("ttf", "Courier", "GB2312", FONT_WEIGHT_BOLD, FONT_SLANT_ROMAN, FONT_FLIP_NIL, FONT_OTHER_AUTOSCALE, FONT_UNDERLINE_LINE, FONT_STRUCKOUT_NONE, 16, 0); logfontttf2 = CreateLogFont ("ttf", "fixed", "GB2312", FONT_WEIGHT_BLACK, FONT_SLANT_ROMAN, FONT_FLIP_NIL, FONT_OTHER_TTFKERN, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 16, 0); return 0; case MSG_TIMER: { /* 接收到定 時器消 息。 * 嚴 格的程 序還應 該在這 里判斷 wParam 是否 等于期 望的定 時器標 識符, 這里是 _ID_TIMER。 */ switch(wParam) { case _ID_TIMER_BEIJING : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_Beijing (buff)); break; case _ID_TIMER_TOKYO : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_Tokyo (buff)); break; case _ID_TIMER_NEWYORK : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_Newyork (buff)); break; case _ID_TIMER_ROME : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_Rome (buff)); break; case _ID_TIMER_BERLIN : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_Berlin (buff)); break; case _ID_TIMER_PARIS : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_Paris (buff)); break; case _ID_TIMER_LONDON : SetDlgItemText (hWnd, _ID_TIME_STATIC, mk_time_London (buff)); break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -