--- /dev/null
+#include <windows.h>\r
+#include "ceglue.h"\r
+\r
+BOOL FAR (*SHFullScreenPtr)(HWND hwnd, DWORD state) = NULL;\r
+\r
+void InitCeGlue (void)\r
+{\r
+ HINSTANCE ayg = LoadLibraryW (TEXT ("aygshell.dll"));\r
+ if (ayg != NULL) {\r
+ SHFullScreenPtr = (BOOL (*)(HWND, DWORD))\r
+ GetProcAddressW (ayg, TEXT ("SHFullScreen"));\r
+ }\r
+}\r
+\r
+// code to turn of screen adopted from\r
+// http://msdn.microsoft.com/en-us/library/ms838354.aspx\r
+\r
+// GDI Escapes for ExtEscape()\r
+#define QUERYESCSUPPORT 8\r
+ \r
+// The following are unique to CE\r
+#define GETVFRAMEPHYSICAL 6144\r
+#define GETVFRAMELEN 6145\r
+#define DBGDRIVERSTAT 6146\r
+#define SETPOWERMANAGEMENT 6147\r
+#define GETPOWERMANAGEMENT 6148\r
+ \r
+ \r
+typedef enum _VIDEO_POWER_STATE {\r
+ VideoPowerOn = 1,\r
+ VideoPowerStandBy,\r
+ VideoPowerSuspend,\r
+ VideoPowerOff\r
+} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;\r
+ \r
+ \r
+typedef struct _VIDEO_POWER_MANAGEMENT {\r
+ ULONG Length;\r
+ ULONG DPMSVersion;\r
+ ULONG PowerState;\r
+} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;\r
+\r
+\r
+int CeEnableBacklight(int enable)\r
+{\r
+ HDC gdc;\r
+ int iESC=SETPOWERMANAGEMENT;\r
+\r
+ gdc = GetDC(NULL);\r
+ if (ExtEscape(gdc, QUERYESCSUPPORT, sizeof(int), (LPCSTR)&iESC, \r
+ 0, NULL)==0)\r
+ {\r
+ MessageBox(NULL,\r
+ L"Sorry, your Pocket PC does not support DisplayOff",\r
+ L"Pocket PC Display Off Feature",\r
+ MB_OK);\r
+ ReleaseDC(NULL, gdc);\r
+ return FALSE;\r
+ }\r
+ else\r
+ {\r
+ VIDEO_POWER_MANAGEMENT vpm;\r
+ vpm.Length = sizeof(VIDEO_POWER_MANAGEMENT);\r
+ vpm.DPMSVersion = 0x0001;\r
+ if (enable) {\r
+ vpm.PowerState = VideoPowerOn;\r
+ } else {\r
+ vpm.PowerState = VideoPowerOff;\r
+ }\r
+ // Power off the display\r
+ ExtEscape(gdc, SETPOWERMANAGEMENT, vpm.Length, (LPCSTR) &vpm, \r
+ 0, NULL);\r
+ ReleaseDC(NULL, gdc);\r
+ return TRUE;\r
+ }\r
+}\r
+\r
#include "callback.h"
#include <commctrl.h>
#include "debug.h"
+#ifdef __CEGCC__
+#include <sipapi.h>
+#include <aygshell.h>
+#include "ceglue.h"
+static int ce_backlight = 1;
+static int ce_fullscreen;
+#endif
#ifdef HAVE_GLIB
//static GHashTable *popup_callback_hash = NULL;
}
#endif
}
+#ifdef __CEGCC__
+static void toggle_fullscreen(HWND mWnd)
+{
+ if (SHFullScreenPtr) {
+ if (!ce_fullscreen) {
+ (*SHFullScreenPtr)(mWnd, SHFS_HIDETASKBAR |
+ SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);
+ } else {
+ (*SHFullScreenPtr)(mWnd, SHFS_HIDESIPBUTTON);
+ }
+ ce_fullscreen = !ce_fullscreen;
+ }
+}
+
+static void toggle_backlight(void)
+{
+ if (ce_backlight)
+ if (CeEnableBacklight(FALSE))
+ ce_backlight = 0;
+ else
+ if (CeEnableBacklight(TRUE))
+ ce_backlight = 1;
+}
+#endif
static LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
navit_zoom_in(gui->nav, 2, NULL);
} else if (wParam == '3') {
navit_zoom_out(gui->nav, 2, NULL);
+ } else if (wParam == '7') {
+ toggle_backlight();
+ } else if (wParam == '9') {
+ toggle_fullscreen(hwnd);
}
}
break;
InvalidateRect (prev, NULL, FALSE);
exit(0);
}
+ InitCeGlue();
#endif
*meth=win32_gui_methods;