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

📄 taskbar.c

📁 minigui PDA系统 可实现手机功能
💻 C
字号:
#include <stdio.h>
#include <time.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 "../common.h"

//Taskbar 控件ID
#define IDC_TASKBAR_INPUT 101
#define IDC_TASKBAR_CHANGE 102
//#define IDC_TASKBAR_CLOSE 103
//#define TRUE  1
//#define FALSE  0

static BOOL KBON;	//键盘状态,监视键盘是否已经打开
//static hMainWnd;	//MC-PDA的主窗口句柄
//static BITMAP bkgnd;
//static BITMAP key;
static HWND hCtrl1;
static HWND hCtrl2;

static void NotifChange (HWND hwnd, int id, int nc, DWORD add_data)
{
    HWND TWnd;
    //当鼠标单击该控件时
    if (nc == STN_CLICKED)
    {
	   if ((TWnd = GetNextMainWindow(MainWindow)) != 0)
	   {
		  //当主窗口后有窗口时,显示该窗口
		  ShowWindow(TWnd, SW_SHOWNORMAL);
	   }
	   else if ((TWnd = GetNextMainWindow (GetActiveWindow())) != MainWindow &&
			TWnd != 0)
	   {
		  //当最上层窗口下有窗口,且此窗口不是主窗口时,显示该窗口
		  ShowWindow(TWnd, SW_SHOWNORMAL);
	   }
    }
}



static void NotifInput (HWND hwnd, int id, int nc, DWORD add_data)
{
    //鼠标点击该控件时
    if (nc == STN_CLICKED) 
    {
	    if (KBON == TRUE)
	    {
		  //如果键盘没有打开,则显示键盘,同时将KBON状态设置为FALSE
		  KBON = FALSE;
		  KeyBoard (hwnd);
	    }
	    else 
	    {
		  HWND Kb;
		  KBON = TRUE;
		  //如果键盘已经打开,则销毁键盘
		  Kb = GetFirstHosted(GetParent(hwnd));
		  DestroyAllControls (Kb);
		  DestroyMainWindow (Kb);
		  PostQuitMessage (Kb);		
	    }
    }
}



static int TaskBarPro (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    BOOL fGetDC;
    RECT rcTemp;
    const RECT* clip = (const RECT*) lParam;
    switch (message) {
    case MSG_CREATE:
		//hdc = GetClientDC(GetDlgItem (hWnd, IDC_TASKBAR_CHANGE));
		//创建“切换窗口”静态框
		hCtrl2 = CreateWindowEx ("static", "切换窗口",
			WS_VISIBLE | SS_NOTIFY | SS_LEFT,
			WS_EX_TRANSPARENT,
			IDC_TASKBAR_CHANGE,
			5, 4, 50, 16,
			hWnd,
			0);
		//建立“切换窗口”静态框回叫函数
		//SetTextColor(GetClientDC(GetDlgItem (hWnd, IDC_TASKBAR_CHANGE)), PIXEL_red);
		SetNotificationCallback (GetDlgItem (hWnd, IDC_TASKBAR_CHANGE), NotifChange);
		
		//创建“输入法”静态框
		hCtrl1 = CreateWindowEx ("static", "输入法",
			WS_VISIBLE | SS_NOTIFY | SS_CENTER,
			WS_EX_TRANSPARENT,
			IDC_TASKBAR_INPUT,
			265, 4, 50, 16,
			hWnd,
			0);
		//建立“输入法”静态框回叫函数
		SetNotificationCallback (GetDlgItem (hWnd, IDC_TASKBAR_INPUT), NotifInput);
    	break;
    
    //case MSG_PAINT:
		//hdc = GetClientDC(GetDlgItem (hWnd, IDC_TASKBAR_CHANGE));
		//SetTextColor(GetClientDC(GetDlgItem (hWnd, IDC_TASKBAR_CHANGE)), PIXEL_red);
/*
	case MSG_ERASEBKGND:
			hdc = (HDC)wParam;
	    	//const RECT* clip = (const RECT*) lParam;
	    	fGetDC = FALSE;
	    	//RECT rcTemp;
		    
	    	if (hdc == 0) 
	    	{
				hdc = GetClientDC (hWnd);
				fGetDC = TRUE;
	    	}       
	    	if (clip) 
	    	{
				rcTemp = *clip;
				ScreenToClient (hWnd, &rcTemp.left, &rcTemp.top);
				ScreenToClient (hWnd, &rcTemp.right, &rcTemp.bottom);
				IncludeClipRect (hdc, &rcTemp);
	   		}
	   		
	    	FillBoxWithBitmap (hdc, 0, 0, 320, 206, &bkgnd);
		//	SetTextColor(GetClientDC(GetDlgItem (hWnd, IDC_TASKBAR_CHANGE)), PIXEL_red);
	    	if (fGetDC)
				ReleaseDC (hdc);
			//printf ("EndERASE.\n");
			return 0;
  */
    case MSG_DESTROY:
        DestroyAllControls (hWnd);
        return 0;

    case MSG_CLOSE:
		//UnloadBitmap (&key);
		//UnloadBitmap(&bkgnd);
        DestroyMainWindow (hWnd);
        PostQuitMessage (hWnd);
        return 0;
    }

    return DefaultMainWinProc(hWnd, message, wParam, lParam);
}


/********************************************************************************************
* Function Name:		TaskBar()
* Function Discription:	create the TaskBar window
********************************************************************************************/
void *TaskBar(void *arg)
{
    MSG Msg;
    HWND hTaskBar;
    MAINWINCREATE CreateInfo;

    

    if(!InitMiniGUIExt())
    {
	exit(2);
    }

    KBON = TRUE;

    //设置窗口属性
    CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER;
    CreateInfo.dwExStyle = WS_EX_TOPMOST|WS_EX_TOOLWINDOW;
    CreateInfo.spCaption = " ";
    CreateInfo.hMenu = 0;
    CreateInfo.hCursor = GetSystemCursor(0);
    CreateInfo.hIcon = 0;
    CreateInfo.MainWindowProc = TaskBarPro;
    CreateInfo.lx = 0; 
    CreateInfo.ty = 214;
    CreateInfo.rx = 320;
    CreateInfo.by = 240;
    CreateInfo.iBkColor = GetWindowElementColor (BKC_CONTROL_DEF);
    CreateInfo.dwAddData = 0;
    CreateInfo.dwReserved = 0;
    CreateInfo.hHosting = HWND_DESKTOP;
    //printf("%d!!!!!\n",MainWindow);
	//LoadBitmap (HDC_SCREEN, &bkgnd, "./image/background/taskbar.jpg");//HDC_SCREEN:屏幕设备,加载图片必须在CreateMainWindow(&CreateInfo)之前
	
    //创建TaskBar主窗口
    hTaskBar = CreateMainWindow (&CreateInfo);
    TaskBarWindow = hTaskBar;
    
    if (hTaskBar == HWND_INVALID)
        exit(-1);

    //显示窗口
    ShowWindow(hTaskBar, SW_SHOWNORMAL);

    while (GetMessage(&Msg, hTaskBar))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
 
    MiniGUIExtCleanUp ();
    MainWindowThreadCleanup (hTaskBar);
    return NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -