📄 psde.c
字号:
/*========================================================================
*
* 版权所有 (C) 2000-2001 吴柏建. All Rights Reserved.
*
* 文件: psde.c
* 内容: PSDE之演示如何使用PSDE功能函数制作PC模拟器。
* 作者: 吴柏建。
* 制作日期: 2000.7.28-2001.8.3
* 修改日期: 2001..
*
*========================================================================*/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <commdlg.h>
#include <mmsystem.h>
#include "resource.h"
#include "../psde.h"
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---pvde.c----DLGHelpAboutProc()--------------------------------------
□
□ 处理ABOUT对话框的消息回调函数。
□
□---2001.7.30---------------------------------------------------------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
long FAR PASCAL DLGHelpAboutProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:break;
case WM_COMMAND:if(wParam==ID_OK)PostMessage(hWnd,WM_CLOSE,0,0);break;
case WM_CLOSE:EndDialog(hWnd, 0);break;
default:return(0);break;
}
return(1);
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---pvde.c----MainProc()----------------------------------------------
□
□ 处理主窗口的消息回调函数。
□
□---2001.7.30---------------------------------------------------------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void MainProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch( message )
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_RESET:
PSDE_Reset();
break;
case ID_ABOUT:
DialogBox(PSDE_GethInstance(), MAKEINTRESOURCE(IDD_ABOUT),hWnd,(DLGPROC)DLGHelpAboutProc);
break;
case ID_MINIMIZED:
ShowWindow(hWnd,SW_SHOWMINIMIZED);
break;
case ID_EXIT:
PSDE_Exit();
break;
}
break;
}
}
//If the size of background bitmap("IDB_FACE") just egual to Windows size defined below,
//there is need't stretch image and program get more speed.
#define WND_WIDTH 460
#define WND_HIGH 448
//Define touchpanel size.
#define TOUCHPANEL_LEFT 70
#define TOUCHPANEL_TOP 24
#define TOUCHPANEL_WIDTH 320
#define TOUCHPANEL_HIGH 240
//Define lcd size.
#define LCD_LEFT 70
#define LCD_TOP 24
#define LCD_WIDTH 320
#define LCD_HIGH 240
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---pvde.c----PSDE_Init()---------------------------------------------
□
□ PSDE模拟PDA环境初始化函数。
□
□---2001.7.30---------------------------------------------------------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void PSDE_Init(void)
{
//LCD显示缓冲区声明。
extern unsigned char DisBuffer[76800];
//PDA入口函数声明。
void main(void);
int i,x,y,a,b,ID=0;
//--------------------------------------------------\\
//请注册使用PSDE!
//注册后您将有权使用PSDE开发应用程序以及随后的商业发行。
//在未注册前PSDE有60天试用时间,试用期满后PSDE将不可用。
//您可以访问http://www.wbj2000.com/cpsde.htm来获取注册码。
//当您使用遇到问题或困难时可以EMAIL TO: wbjok@yahoo.com
//--------------------------------------------------\\
//设置PSDE的用户名和注册码。
PSDE_SetRegCode("UserName","RegCode");
//指定窗口背景图象。
PSDE_SetFaceBmp("IDB_FACE");
//指定包含有窗口中使用的按钮的状态的图象。
PSDE_SetButtonBmp("IDB_BUTTON");
//设置按钮按下和触摸屏点击时的模拟声音。
PSDE_SetKeySound(IDR_WAVE_TOUCH);
//设置按钮按下和触摸屏点击时的模拟声音开关为开。
PSDE_SetKeySoundOnOff(1);
//设置处理主窗口消息回调函数的指针为MainProc。
PSDE_SetFuncWndProc(MainProc);
//设置PDA代码入口函数的指针为main。
PSDE_SetFuncMain(main);
//设置窗口客户区的宽、高,是否有边框,和窗口标题。
PSDE_InitWindow(WND_WIDTH,WND_HIGH,FALSE,"PSDE-PC");
//设置模拟触摸屏的起点和宽高。
PSDE_InitTouchPanel(TOUCHPANEL_LEFT,TOUCHPANEL_TOP,TOUCHPANEL_WIDTH,TOUCHPANEL_HIGH,FALSE);
//设置模拟LCD的起点、宽高、是否放大一倍、显示缓冲扫描方式、颜色深度、显示缓冲区指针。
PSDE_InitLcd(LCD_LEFT,LCD_TOP,LCD_WIDTH,LCD_HIGH,FALSE,0,8,DisBuffer);
//设置FLASH的尺寸和保存FLASH数据的文件名称。
//PSDE_InitFlashMemory(0x100000,"Flash");
//设置ROM的尺寸和保存ROM数据的文件名称。
//PSDE_InitRomMemory(0x800000,"Rom");
//设置按钮。
PSDE_AddButton(258,363,10,134,49,134,39,31,ID++);//←┘
x=3;y=298;
a=12;b=24;
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);//ESC
for(i=0,a=47;i<4;i++,a+=19)//F1~F4
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
for(i=0,a=134;i<4;i++,a+=19)//F5~F8
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
for(i=0,a=221;i<4;i++,a+=19)//F9~F12
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
for(i=0,a=303;i<3;i++,a+=19)//Power Sleep Wake
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
for(i=0,a=12,b=48;i<15;i++,a+=19)//[~]~[←]
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
PSDE_AddButton(15,363,12,65,12,65+145,25,14,ID++);//TAB
for(i=0,a=40,b=65;i<12;i++,a+=19)//[Q]~[}]
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
PSDE_AddButton(15,380,12,82,12,82+145,31,14,ID++);//CAPS
for(i=0,a=46,b=82;i<11;i++,a+=19)//[A]~["]
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
PSDE_AddButton(15,397,12,99,12,99+145,39,14,ID++);//LShift
for(i=0,a=54,b=99;i<10;i++,a+=19)//[Z]~[?]
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
PSDE_AddButton(247,397,244,99,244,99+145,50,14,ID++);//RShift
PSDE_AddButton(15,414,12,116,12,116+145,25,14,ID++);//LCtrl
PSDE_AddButton(272,414,12,116,12,116+145,25,14,ID++);//RCtrl
PSDE_AddButton(43,414,40,116,40,116+145,25,14,ID++);//LWin
PSDE_AddButton(216,414,40,116,40,116+145,25,14,ID++);//RWin
PSDE_AddButton(71,414,68,116,68,116+145,25,14,ID++);//LAlt
PSDE_AddButton(188,414,68,116,68,116+145,25,14,ID++);//RAlt
PSDE_AddButton(99,414,96,116,96,116+145,86,14,ID++);//Space
PSDE_AddButton(244,414,241,116,241,116+145,25,14,ID++);//Print
for(b=48;b<=82;b+=17)//Print Scroll Pause Ins Home PgUp Del End PgDn
{
for(i=0,a=303;i<3;i++,a+=19)
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
}
for(b=48;b<=99;b+=17)//NumLock / * - 7 8 9 4 5 6 1 2 3
{
for(i=0,a=366;i<3;i++,a+=19)
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
}
PSDE_AddButton(325,397,322,99,322,99+145,16,14,ID++);//↑
for(i=0,a=303,b=116;i<3;i++,a+=19)//←↓→
{
PSDE_AddButton(x+a,y+b,a,b,a,b+145,16,14,ID++);
}
PSDE_AddButton(426,346,423,48,423,48+145,16,14,ID++);//-
PSDE_AddButton(426,363,423,65,423,65+145,16,31,ID++);//+
PSDE_AddButton(426,397,423,99,423,99+145,16,31,ID++);//Enter
PSDE_AddButton(407,414,404,116,404,116+145,16,14,ID++);//Del
PSDE_AddButton(369,414,366,116,366,116+145,35,14,ID++);//0
//设置窗口使用的图标。
PSDE_LoadIcon(IDI_ICON);
//设置窗口的主菜单。
PSDE_LoadMenu(IDR_MENU);
//设置加速键表。
PSDE_LoadAccelerator(IDR_ACCELERATOR);
//设置右键弹出菜单。
PSDE_LoadPopMenu(IDR_POPMENU);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -