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

📄 livewnd.c

📁 用miniGUI写的一个简单的皮肤界面!
💻 C
字号:
/*
** $Id: skindemo.c,v 1.16 2006/05/10 09:51:33 xwyan Exp $
**
** skindemo.c: Sample program for MiniGUI Programming Guide
**      Usage of SKIN.
**
** Copyright (C) 2004 ~ 2006 Feynman Software.
**
** License: GPL
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.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 <minigui/skin.h>
#include "guicommon.h"

#ifdef _EXT_SKIN

#define SIID_LIVEOK				  3
#define SIID_LIVECLOSE			  4

#define LIVE_DEF_WIDTH       800
#define LIVE_DEF_HEIGHT      600


skin_head_t* p_liveskin_head = 0;



/* 皮肤事件回调函数 */
static int live_event_cb (HWND hwnd, skin_item_t* item, int event, void* data)
{
    if (event == SIE_BUTTON_CLICKED) {
        switch (item->id) {
		case SIID_LIVECLOSE:
        case SIID_LIVEOK:
            SendMessage (hwnd, MSG_CLOSE, 0, 0);
            break;
        }
    }
    return 1;
}
 int livefocusIndex = 0;
 int livefocusbtn = SIID_LIVEOK;
/* 皮肤窗口消息回调函数 */
static int livemsg_event_cb (HWND hwnd, int message, WPARAM wparam, LPARAM lparam, int* result)
{
	//printf("message = %d \n",message);
    switch (message) {
		case MSG_ACTIVE:
		{
				HWND childedt = GetDlgItem(hwnd,IDC_SERVERADR_EDT);
				SetFocus(childedt);
		}
		break;
		case MSG_KEYDOWN:
		{
			//printf("wparam = %d \n",wparam);
			switch(wparam)
				{
					case  0x1c:
					{
						if(livefocusbtn == SIID_LIVECLOSE)
							SendMessage (hwnd, MSG_CLOSE, 0, 0);
						else
						//连接服务器播放视频
						{
							
						}
					}
					break;
					//向上按键
					case 103:
					{
						livefocusIndex--;
						if(livefocusIndex < 0)
							livefocusIndex = 2;
						HWND childedt = GetDlgItem(hwnd,livefocusIndex);
						SetFocus(childedt);
					}
					break;
					//向下按键 
					case 108:
					{
						livefocusIndex++;
						if(livefocusIndex > 2)
							livefocusIndex = 0;
						HWND childedt = GetDlgItem(hwnd,livefocusIndex);
						SetFocus(childedt);
					}
					break;
					//向右
					case 106:
					{
						if(livefocusbtn == SIID_LIVECLOSE)
							break;
						else{
								skin_head_t* hHead;
								skin_item_t* item;
								livefocusbtn = SIID_LIVECLOSE;
								hHead = get_window_skin(hwnd);
								item = skin_get_item(hHead,SIID_LIVECLOSE);
								item->style |= SI_STATUS_HILIGHTED;
								item = skin_get_item(hHead,SIID_LIVEOK);
								item->style = SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT |SI_STATUS_VISIBLE;
								set_window_skin(hwnd,hHead);
								UpdateWindow (hwnd, TRUE);
							}

					}
					break;
					//向左
					case 105:
					{
						if(livefocusbtn == SIID_LIVEOK)
							break;
						else
						{
								skin_head_t* hHead;
								skin_item_t* item;
								livefocusbtn = SIID_LIVEOK;
								hHead = get_window_skin(hwnd);
								item = skin_get_item(hHead,SIID_LIVEOK);
								item->style |= SI_STATUS_HILIGHTED;
								item = skin_get_item(hHead,SIID_LIVECLOSE);
								item->style = SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT |SI_STATUS_VISIBLE;
								set_window_skin(hwnd,hHead);
								UpdateWindow (hwnd, TRUE);
						}
					}
					break;
				}	
		}
		break;
    }
    return 1;
}

int LiveGUIMain (HWND hosting)
{
	 livefocusIndex = 0;
	 livefocusbtn = SIID_LIVEOK;
	//定义局部数组
	CTRLDATA edtarray[] =
	{
		{"sledit",
		WS_CHILD|WS_VISIBLE|WS_BORDER |ES_LEFT|ES_AUTOSELECT,
		300, 200, 300, 30, 
		IDC_SERVERADR_EDT, 
		NULL,
		0
		},

		{"sledit",
		WS_CHILD | WS_VISIBLE | WS_BORDER|ES_LEFT|ES_AUTOSELECT,
		300, 300, 300, 30,
		IDC_USERNAME_EDT,
		NULL,
		0
		},

		{"sledit",
		WS_CHILD | WS_VISIBLE | WS_BORDER|ES_PASSWORD|ES_LEFT|ES_AUTOSELECT, 
		300, 400, 300, 30,
		ID_PASSWORD_EDT, 
		NULL,
		0
		}
	};


	si_nrmlabel_t si_livelabel_items[] = 
	{
		{"直 播 设 置",0xDD0000, 0x00FF00, 0xFF0000, 0	},
		{"服务器地址:",0xDD0000, 0x00FF00, 0xFF0000, 0	},
		{"用  户  名:",0xDD0000, 0x00FF00, 0xFF0000, 0	},
		{"密      码:",0xDD0000, 0x00FF00, 0xFF0000, 0	}
	};


	/* 定义皮肤元素数组 */
	skin_item_t skin_live_items [] =
	{
		
	//编辑控件 服务器地址输入框
	{SIID_SERVERADR_EDT,  SI_TYPE_CONTROL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		300, 200, {}, -1, "c",0,edtarray},
	//用户名输入框 
	{SIID_SERVERADR_EDT,  SI_TYPE_CONTROL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		300, 300, {}, -1, "c",0,edtarray+1},
	//密码输入框
	{SIID_SERVERADR_EDT,  SI_TYPE_CONTROL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		300, 400, {}, -1, "c",0,edtarray+2},
	
			//OK按钮
	{SIID_LIVEOK, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE|SI_STATUS_HILIGHTED,
		200, 440, {}, 1, ""},

		//取消按钮
	{SIID_LIVECLOSE, SI_TYPE_CMDBUTTON   | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,
		500, 440, {}, 2, ""},


	//窗口标题
	{SIID_TITLE,  SI_TYPE_NRMLABEL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		300, 100, {}, -1, "a",0,si_livelabel_items },
	//服务器地址
	{SIID_SERVERADR_LABEL,  SI_TYPE_NRMLABEL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		200, 200, {}, -1, "b",0,si_livelabel_items+1},
	//用户名
	{SIID_USERNAME_LABEL,  SI_TYPE_NRMLABEL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		200, 300, {}, -1, "c",0,si_livelabel_items+2},
	//密码
	{SIID_PASSWORD_LABEL,  SI_TYPE_NRMLABEL   | SI_TEST_SHAPE_RECT  | SI_STATUS_VISIBLE,
		200, 400, {}, -1, "c",0,si_livelabel_items+3}

	};

	/* 定义皮肤 */
	skin_head_t live_skin =
	{
		"直播窗口",
		SKIN_STYLE_TOOLTIP, NULL, NULL, 
		0, 9, skin_live_items, FALSE
	};

	/* 位图数组 */
	const char *live_bmp_name[] = {
	"./res/main.png", "./res/okbtn.png", "./res/closebtn.png", 
	};
	

	p_liveskin_head = &live_skin;
	HWND h_liveWnd;
	MSG msg;   
#ifdef _MGRM_PROCESSES
    JoinLayer(NAME_DEF_LAYER , "skindemo" , 0 , 0);
#endif

    if (!InitMiniGUIExt()) {
        return 2;
    }
    
    load_skin_bmps (&live_skin, TRUE,live_bmp_name,3);    /* 装载位图资源 */
    if (live_skin.bmps == NULL) {
        printf ("Could not load skin bitmaps!\n");
        return 3;
    }

	load_skin_fonts(&live_skin,TRUE);/*装载字体*/

    if ( !skin_init (&live_skin, live_event_cb, livemsg_event_cb) ){    /* 初始化皮肤 */
        printf ("skin init fail!\n");
    }
    else{
        h_liveWnd = create_skin_main_window (&live_skin,
                        hosting, 0, 0, LIVE_DEF_WIDTH, LIVE_DEF_HEIGHT,
                        TRUE);	
		//HWND childedt = GetDlgItem(h_liveWnd,IDC_SERVERADR_EDT);
		//printf("childedt = %d \n",childedt);
		//SetFocus(childedt);
        while (GetMessage (&msg, h_liveWnd)) {
            TranslateMessage (&msg);
            DispatchMessage (&msg);
        }
        MainWindowCleanup (h_liveWnd);
        skin_deinit (&live_skin);        /* 撤销皮肤 */
    }
	load_skin_fonts(&live_skin,FALSE);/*卸装字体*/
    load_skin_bmps(&live_skin, FALSE,live_bmp_name,3);    /* 卸载位图资源 */
    MiniGUIExtCleanUp ();
    return 0;
}

#ifndef _LITE_VERSION
#include <minigui/dti.c>
#endif
#else
#error "Lack of SKIN support in MiniGUIExt library."
#endif /* _EXT_SKIN */

⌨️ 快捷键说明

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