📄 specplaywnd.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_SPECPLAYOK 1
#define SIID_SPECPLAYCLOSE 2
#define SPECPLAY_DEF_WIDTH 800
#define SPECPLAY_DEF_HEIGHT 600
skin_head_t* p_specplayskin_head = 0;
int specplayfocusIndex = 0;
int specplayfocusbtn = SIID_SPECPLAYOK;
/* 皮肤事件回调函数 */
static int specplay_event_cb (HWND hwnd, skin_item_t* item, int event, void* data)
{
if (event == SIE_BUTTON_CLICKED) {
switch (item->id) {
case SIID_SPECPLAYCLOSE:
SendMessage (hwnd, MSG_CLOSE, 0, 0);
break;
case SIID_SPECPLAYOK:
filelistGUIMain (hwnd);
break;
}
}
return 1;
}
/* 皮肤窗口消息回调函数 */
static int specplaymsg_event_cb (HWND hwnd, int message, WPARAM wparam, LPARAM lparam, int* result)
{
switch (message) {
case MSG_ACTIVE:
{
HWND childedt = GetDlgItem(hwnd,IDC_SERVERADR_EDT);
SetFocus(childedt);
}
break;
case MSG_KEYDOWN:
{
switch(wparam)
{
case 0x1c:
{
if(specplayfocusbtn == SIID_SPECPLAYCLOSE)
SendMessage (hwnd, MSG_CLOSE, 0, 0);
else
//连接服务器点播文件
{
}
}
break;
//向上按键
case 103:
{
specplayfocusIndex--;
if(specplayfocusIndex < 0)
specplayfocusIndex = 2;
HWND childedt = GetDlgItem(hwnd,specplayfocusIndex);
SetFocus(childedt);
}
break;
//向下按键
case 108:
{
specplayfocusIndex++;
if(specplayfocusIndex > 2)
specplayfocusIndex = 0;
HWND childedt = GetDlgItem(hwnd,specplayfocusIndex);
SetFocus(childedt);
}
break;
//向右
case 106:
{
if(specplayfocusbtn == SIID_SPECPLAYCLOSE)
break;
else{
skin_head_t* hHead;
skin_item_t* item;
specplayfocusbtn = SIID_SPECPLAYCLOSE;
hHead = get_window_skin(hwnd);
item = skin_get_item(hHead,SIID_SPECPLAYCLOSE);
item->style |= SI_STATUS_HILIGHTED;
item = skin_get_item(hHead,SIID_SPECPLAYOK);
item->style = SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT |SI_STATUS_VISIBLE;
set_window_skin(hwnd,hHead);
UpdateWindow (hwnd, TRUE);
}
}
break;
//向左
case 105:
{
if(specplayfocusbtn == SIID_SPECPLAYOK)
break;
else
{
skin_head_t* hHead;
skin_item_t* item;
specplayfocusbtn = SIID_SPECPLAYOK;
hHead = get_window_skin(hwnd);
item = skin_get_item(hHead,SIID_SPECPLAYOK);
item->style |= SI_STATUS_HILIGHTED;
item = skin_get_item(hHead,SIID_SPECPLAYCLOSE);
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 specplayGUIMain (HWND hosting)
{
specplayfocusIndex = 0;
specplayfocusbtn = SIID_SPECPLAYOK;
//定义局部数组
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_specplaylabel_items[] =
{
{"点 播 设 置",0xDD0000, 0x00FF00, 0xFF0000, 0 },
{"服务器地址:",0xDD0000, 0x00FF00, 0xFF0000, 0 },
{"用 户 名:",0xDD0000, 0x00FF00, 0xFF0000, 0 },
{"密 码:",0xDD0000, 0x00FF00, 0xFF0000, 0 }
};
/* 定义皮肤元素数组 */
skin_item_t skin_specplay_items [] =
{
//OK按钮
{SIID_SPECPLAYOK, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,
200, 440, {}, 1, ""},
//取消按钮
{SIID_SPECPLAYCLOSE, 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_specplaylabel_items },
//服务器地址
{SIID_SERVERADR_LABEL, SI_TYPE_NRMLABEL | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,
200, 200, {}, -1, "b",0,si_specplaylabel_items+1},
//用户名
{SIID_USERNAME_LABEL, SI_TYPE_NRMLABEL | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,
200, 300, {}, -1, "c",0,si_specplaylabel_items+2},
//密码
{SIID_PASSWORD_LABEL, SI_TYPE_NRMLABEL | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,
200, 400, {}, -1, "c",0,si_specplaylabel_items+3},
//编辑控件 服务器地址输入框
{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}
};
/* 定义皮肤 */
skin_head_t specplay_skin =
{
"直播窗口",
SKIN_STYLE_TOOLTIP, NULL, NULL,
0, 9, skin_specplay_items, FALSE
};
/* 位图数组 */
const char *specplay_bmp_name[] = {
"./res/main.png", "./res/okbtn.png", "./res/closebtn.png",
};
p_specplayskin_head = &specplay_skin;
HWND h_specplayWnd;
MSG msg;
#ifdef _MGRM_PROCESSES
JoinLayer(NAME_DEF_LAYER , "skindemo" , 0 , 0);
#endif
if (!InitMiniGUIExt()) {
return 2;
}
load_skin_bmps (&specplay_skin, TRUE,specplay_bmp_name,3); /* 装载位图资源 */
if (specplay_skin.bmps == NULL) {
printf ("Could not load skin bitmaps!\n");
return 3;
}
load_skin_fonts(&specplay_skin,TRUE);/*装载字体*/
if ( !skin_init (&specplay_skin, specplay_event_cb, specplaymsg_event_cb) ){ /* 初始化皮肤 */
printf ("skin init fail!\n");
}
else{
h_specplayWnd = create_skin_main_window (&specplay_skin,
hosting, 0, 0, SPECPLAY_DEF_WIDTH, SPECPLAY_DEF_HEIGHT,
TRUE);
SetFocus(skin_get_control_hwnd(&specplay_skin,SIID_SERVERADR_EDT));
while (GetMessage (&msg, h_specplayWnd)) {
TranslateMessage (&msg);
DispatchMessage (&msg);
}
MainWindowCleanup (h_specplayWnd);
skin_deinit (&specplay_skin); /* 撤销皮肤 */
}
load_skin_fonts(&specplay_skin,FALSE);/*卸装字体*/
load_skin_bmps(&specplay_skin, FALSE,specplay_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 + -