⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wordclock.c

📁 世界时间代码 。希望能对minigui的初学者有帮助
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -