mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 17:12:58 +00:00
various rough additions towards a working dialog
svn path=/trunk/; revision=30176
This commit is contained in:
parent
64ee2581fe
commit
6833d9e227
5 changed files with 448 additions and 190 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* -*- c-basic-offset: 8 -*-
|
/*
|
||||||
rdesktop: A Remote Desktop Protocol client.
|
rdesktop: A Remote Desktop Protocol client.
|
||||||
Connection settings dialog
|
Connection settings dialog
|
||||||
Copyright (C) Ged Murphy 2007
|
Copyright (C) Ged Murphy 2007
|
||||||
|
@ -20,10 +20,48 @@
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <tchar.h>
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
|
/* As slider control can't contain user data, we have to keep an
|
||||||
|
* array of RESOLUTION_INFO to have our own associated data.
|
||||||
|
*/
|
||||||
|
typedef struct _RESOLUTION_INFO
|
||||||
|
{
|
||||||
|
DWORD dmPelsWidth;
|
||||||
|
DWORD dmPelsHeight;
|
||||||
|
} RESOLUTION_INFO, *PRESOLUTION_INFO;
|
||||||
|
|
||||||
|
typedef struct _SETTINGS_ENTRY
|
||||||
|
{
|
||||||
|
struct _SETTINGS_ENTRY *Blink;
|
||||||
|
struct _SETTINGS_ENTRY *Flink;
|
||||||
|
DWORD dmBitsPerPel;
|
||||||
|
DWORD dmPelsWidth;
|
||||||
|
DWORD dmPelsHeight;
|
||||||
|
} SETTINGS_ENTRY, *PSETTINGS_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _DISPLAY_DEVICE_ENTRY
|
||||||
|
{
|
||||||
|
struct _DISPLAY_DEVICE_ENTRY *Flink;
|
||||||
|
LPTSTR DeviceDescription;
|
||||||
|
LPTSTR DeviceName;
|
||||||
|
LPTSTR DeviceKey;
|
||||||
|
LPTSTR DeviceID;
|
||||||
|
DWORD DeviceStateFlags;
|
||||||
|
PSETTINGS_ENTRY Settings; /* sorted by increasing dmPelsHeight, BPP */
|
||||||
|
DWORD SettingsCount;
|
||||||
|
PRESOLUTION_INFO Resolutions;
|
||||||
|
DWORD ResolutionsCount;
|
||||||
|
PSETTINGS_ENTRY CurrentSettings; /* Points into Settings list */
|
||||||
|
SETTINGS_ENTRY InitialSettings;
|
||||||
|
} DISPLAY_DEVICE_ENTRY, *PDISPLAY_DEVICE_ENTRY;
|
||||||
|
|
||||||
typedef struct _INFO
|
typedef struct _INFO
|
||||||
{
|
{
|
||||||
|
PDISPLAY_DEVICE_ENTRY DisplayDeviceList;
|
||||||
|
PDISPLAY_DEVICE_ENTRY CurrentDisplayDevice;
|
||||||
HWND hSelf;
|
HWND hSelf;
|
||||||
HWND hTab;
|
HWND hTab;
|
||||||
HWND hGeneralPage;
|
HWND hGeneralPage;
|
||||||
|
@ -65,7 +103,7 @@ GeneralOnInit(PINFO pInfo)
|
||||||
SetWindowPos(pInfo->hGeneralPage,
|
SetWindowPos(pInfo->hGeneralPage,
|
||||||
NULL,
|
NULL,
|
||||||
15,
|
15,
|
||||||
122,
|
110,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||||
|
@ -138,13 +176,326 @@ GeneralDlgProc(HWND hDlg,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PSETTINGS_ENTRY
|
||||||
|
GetPossibleSettings(IN LPCTSTR DeviceName, OUT DWORD* pSettingsCount, OUT PSETTINGS_ENTRY* CurrentSettings)
|
||||||
|
{
|
||||||
|
DEVMODE devmode;
|
||||||
|
DWORD NbSettings = 0;
|
||||||
|
DWORD iMode = 0;
|
||||||
|
DWORD dwFlags = 0;
|
||||||
|
PSETTINGS_ENTRY Settings = NULL;
|
||||||
|
HDC hDC;
|
||||||
|
PSETTINGS_ENTRY Current;
|
||||||
|
DWORD bpp, xres, yres, checkbpp;
|
||||||
|
DWORD curDispFreq;
|
||||||
|
|
||||||
|
|
||||||
|
/* Get current settings */
|
||||||
|
*CurrentSettings = NULL;
|
||||||
|
hDC = CreateIC(NULL, DeviceName, NULL, NULL);
|
||||||
|
bpp = GetDeviceCaps(hDC, PLANES);
|
||||||
|
bpp *= GetDeviceCaps(hDC, BITSPIXEL);
|
||||||
|
xres = GetDeviceCaps(hDC, HORZRES);
|
||||||
|
yres = GetDeviceCaps(hDC, VERTRES);
|
||||||
|
DeleteDC(hDC);
|
||||||
|
|
||||||
|
/* List all settings */
|
||||||
|
devmode.dmSize = (WORD)sizeof(DEVMODE);
|
||||||
|
devmode.dmDriverExtra = 0;
|
||||||
|
|
||||||
|
if (!EnumDisplaySettingsEx(DeviceName, ENUM_CURRENT_SETTINGS, &devmode, dwFlags))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
curDispFreq = devmode.dmDisplayFrequency;
|
||||||
|
|
||||||
|
while (EnumDisplaySettingsEx(DeviceName, iMode, &devmode, dwFlags))
|
||||||
|
{
|
||||||
|
if ((devmode.dmBitsPerPel==8 ||
|
||||||
|
devmode.dmBitsPerPel==16 ||
|
||||||
|
devmode.dmBitsPerPel==24 ||
|
||||||
|
devmode.dmBitsPerPel==32) &&
|
||||||
|
devmode.dmDisplayFrequency==curDispFreq)
|
||||||
|
{
|
||||||
|
checkbpp=1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
checkbpp=0;
|
||||||
|
|
||||||
|
if (devmode.dmPelsWidth < 640 ||
|
||||||
|
devmode.dmPelsHeight < 480 || checkbpp == 0)
|
||||||
|
{
|
||||||
|
iMode++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Current = HeapAlloc(GetProcessHeap(), 0, sizeof(SETTINGS_ENTRY));
|
||||||
|
if (Current != NULL)
|
||||||
|
{
|
||||||
|
/* Sort resolutions by increasing height, and BPP */
|
||||||
|
PSETTINGS_ENTRY Previous = NULL;
|
||||||
|
PSETTINGS_ENTRY Next = Settings;
|
||||||
|
Current->dmPelsWidth = devmode.dmPelsWidth;
|
||||||
|
Current->dmPelsHeight = devmode.dmPelsHeight;
|
||||||
|
Current->dmBitsPerPel = devmode.dmBitsPerPel;
|
||||||
|
while (Next != NULL && (
|
||||||
|
Next->dmPelsWidth < Current->dmPelsWidth ||
|
||||||
|
(Next->dmPelsWidth == Current->dmPelsWidth && Next->dmPelsHeight < Current->dmPelsHeight) ||
|
||||||
|
(Next->dmPelsHeight == Current->dmPelsHeight &&
|
||||||
|
Next->dmPelsWidth == Current->dmPelsWidth &&
|
||||||
|
Next->dmBitsPerPel < Current->dmBitsPerPel )))
|
||||||
|
{
|
||||||
|
Previous = Next;
|
||||||
|
Next = Next->Flink;
|
||||||
|
}
|
||||||
|
Current->Blink = Previous;
|
||||||
|
Current->Flink = Next;
|
||||||
|
if (Previous == NULL)
|
||||||
|
Settings = Current;
|
||||||
|
else
|
||||||
|
Previous->Flink = Current;
|
||||||
|
if (Next != NULL)
|
||||||
|
Next->Blink = Current;
|
||||||
|
if (devmode.dmPelsWidth == xres && devmode.dmPelsHeight == yres && devmode.dmBitsPerPel == bpp)
|
||||||
|
{
|
||||||
|
*CurrentSettings = Current;
|
||||||
|
}
|
||||||
|
NbSettings++;
|
||||||
|
}
|
||||||
|
iMode++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*pSettingsCount = NbSettings;
|
||||||
|
return Settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AddDisplayDevice(PINFO pInfo, PDISPLAY_DEVICE DisplayDevice)
|
||||||
|
{
|
||||||
|
PDISPLAY_DEVICE_ENTRY newEntry = NULL;
|
||||||
|
LPTSTR description = NULL;
|
||||||
|
LPTSTR name = NULL;
|
||||||
|
LPTSTR key = NULL;
|
||||||
|
LPTSTR devid = NULL;
|
||||||
|
DWORD descriptionSize, nameSize, keySize, devidSize;
|
||||||
|
PSETTINGS_ENTRY Current;
|
||||||
|
DWORD ResolutionsCount = 1;
|
||||||
|
DWORD i;
|
||||||
|
|
||||||
|
newEntry = HeapAlloc(GetProcessHeap(),
|
||||||
|
0,
|
||||||
|
sizeof(DISPLAY_DEVICE_ENTRY));
|
||||||
|
if (!newEntry) goto ByeBye;
|
||||||
|
ZeroMemory(newEntry, sizeof(DISPLAY_DEVICE_ENTRY));
|
||||||
|
|
||||||
|
newEntry->Settings = GetPossibleSettings(DisplayDevice->DeviceName,
|
||||||
|
&newEntry->SettingsCount,
|
||||||
|
&newEntry->CurrentSettings);
|
||||||
|
if (!newEntry->Settings) goto ByeBye;
|
||||||
|
|
||||||
|
newEntry->InitialSettings.dmPelsWidth = newEntry->CurrentSettings->dmPelsWidth;
|
||||||
|
newEntry->InitialSettings.dmPelsHeight = newEntry->CurrentSettings->dmPelsHeight;
|
||||||
|
newEntry->InitialSettings.dmBitsPerPel = newEntry->CurrentSettings->dmBitsPerPel;
|
||||||
|
|
||||||
|
/* Count different resolutions */
|
||||||
|
for (Current = newEntry->Settings; Current != NULL; Current = Current->Flink)
|
||||||
|
{
|
||||||
|
if (Current->Flink != NULL &&
|
||||||
|
((Current->dmPelsWidth != Current->Flink->dmPelsWidth) &&
|
||||||
|
(Current->dmPelsHeight != Current->Flink->dmPelsHeight)))
|
||||||
|
{
|
||||||
|
ResolutionsCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
newEntry->Resolutions = HeapAlloc(GetProcessHeap(),
|
||||||
|
0,
|
||||||
|
ResolutionsCount * sizeof(RESOLUTION_INFO));
|
||||||
|
if (!newEntry->Resolutions) goto ByeBye;
|
||||||
|
|
||||||
|
newEntry->ResolutionsCount = ResolutionsCount;
|
||||||
|
|
||||||
|
/* Fill resolutions infos */
|
||||||
|
for (Current = newEntry->Settings, i = 0; Current != NULL; Current = Current->Flink)
|
||||||
|
{
|
||||||
|
if (Current->Flink == NULL ||
|
||||||
|
(Current->Flink != NULL &&
|
||||||
|
((Current->dmPelsWidth != Current->Flink->dmPelsWidth) &&
|
||||||
|
(Current->dmPelsHeight != Current->Flink->dmPelsHeight))))
|
||||||
|
{
|
||||||
|
newEntry->Resolutions[i].dmPelsWidth = Current->dmPelsWidth;
|
||||||
|
newEntry->Resolutions[i].dmPelsHeight = Current->dmPelsHeight;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
descriptionSize = (_tcslen(DisplayDevice->DeviceString) + 1) * sizeof(TCHAR);
|
||||||
|
description = HeapAlloc(GetProcessHeap(), 0, descriptionSize);
|
||||||
|
if (!description) goto ByeBye;
|
||||||
|
|
||||||
|
nameSize = (_tcslen(DisplayDevice->DeviceName) + 1) * sizeof(TCHAR);
|
||||||
|
name = HeapAlloc(GetProcessHeap(), 0, nameSize);
|
||||||
|
if (!name) goto ByeBye;
|
||||||
|
|
||||||
|
keySize = (_tcslen(DisplayDevice->DeviceKey) + 1) * sizeof(TCHAR);
|
||||||
|
key = HeapAlloc(GetProcessHeap(), 0, keySize);
|
||||||
|
if (!key) goto ByeBye;
|
||||||
|
|
||||||
|
devidSize = (_tcslen(DisplayDevice->DeviceID) + 1) * sizeof(TCHAR);
|
||||||
|
devid = HeapAlloc(GetProcessHeap(), 0, devidSize);
|
||||||
|
if (!devid) goto ByeBye;
|
||||||
|
|
||||||
|
memcpy(description, DisplayDevice->DeviceString, descriptionSize);
|
||||||
|
memcpy(name, DisplayDevice->DeviceName, nameSize);
|
||||||
|
memcpy(key, DisplayDevice->DeviceKey, keySize);
|
||||||
|
memcpy(devid, DisplayDevice->DeviceID, devidSize);
|
||||||
|
newEntry->DeviceDescription = description;
|
||||||
|
newEntry->DeviceName = name;
|
||||||
|
newEntry->DeviceKey = key;
|
||||||
|
newEntry->DeviceID = devid;
|
||||||
|
newEntry->DeviceStateFlags = DisplayDevice->StateFlags;
|
||||||
|
newEntry->Flink = pInfo->DisplayDeviceList;
|
||||||
|
pInfo->DisplayDeviceList = newEntry;
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
ByeBye:
|
||||||
|
if (newEntry != NULL)
|
||||||
|
{
|
||||||
|
if (newEntry->Settings != NULL)
|
||||||
|
{
|
||||||
|
Current = newEntry->Settings;
|
||||||
|
while (Current != NULL)
|
||||||
|
{
|
||||||
|
PSETTINGS_ENTRY Next = Current->Flink;
|
||||||
|
HeapFree(GetProcessHeap(), 0, Current);
|
||||||
|
Current = Next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (newEntry->Resolutions != NULL)
|
||||||
|
HeapFree(GetProcessHeap(), 0, newEntry->Resolutions);
|
||||||
|
HeapFree(GetProcessHeap(), 0, newEntry);
|
||||||
|
}
|
||||||
|
if (description != NULL)
|
||||||
|
HeapFree(GetProcessHeap(), 0, description);
|
||||||
|
if (name != NULL)
|
||||||
|
HeapFree(GetProcessHeap(), 0, name);
|
||||||
|
if (key != NULL)
|
||||||
|
HeapFree(GetProcessHeap(), 0, key);
|
||||||
|
if (devid != NULL)
|
||||||
|
HeapFree(GetProcessHeap(), 0, devid);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
UpdateDisplay(IN HWND hwndDlg, PINFO pGlobalData, IN BOOL bUpdateThumb)
|
||||||
|
{
|
||||||
|
TCHAR Buffer[64];
|
||||||
|
TCHAR Pixel[64];
|
||||||
|
DWORD index;
|
||||||
|
|
||||||
|
LoadString(hInst, IDS_PIXEL, Pixel, sizeof(Pixel) / sizeof(TCHAR));
|
||||||
|
_stprintf(Buffer, Pixel, pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth, pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight, Pixel);
|
||||||
|
//SendDlgItemMessage(pGlobalData->hDisplayPage, IDC_SETTINGS_RESOLUTION_TEXT, WM_SETTEXT, 0, (LPARAM)Buffer);
|
||||||
|
SetDlgItemText(pGlobalData->hDisplayPage, pGlobalData->hDisplayPage, Buffer);
|
||||||
|
|
||||||
|
if (LoadString(hInst, (2900 + pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel), Buffer, sizeof(Buffer) / sizeof(TCHAR)))
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_GEOSLIDER, CB_SELECTSTRING, (WPARAM)-1, (LPARAM)Buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
FillResolutionsAndColors(PINFO pInfo)
|
||||||
|
{
|
||||||
|
PSETTINGS_ENTRY Current;
|
||||||
|
DWORD index, i, num;
|
||||||
|
DWORD MaxBpp = 0;
|
||||||
|
UINT HighBpp;
|
||||||
|
|
||||||
|
pInfo->CurrentDisplayDevice = pInfo->DisplayDeviceList; /* Update global variable */
|
||||||
|
|
||||||
|
/* find max bpp */
|
||||||
|
SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_BPPCOMBO,
|
||||||
|
CB_RESETCONTENT,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
for (Current = pInfo->DisplayDeviceList->Settings; Current != NULL; Current = Current->Flink)
|
||||||
|
{
|
||||||
|
if (Current->dmBitsPerPel > MaxBpp)
|
||||||
|
MaxBpp = Current->dmBitsPerPel;
|
||||||
|
}
|
||||||
|
switch (MaxBpp)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
case 24: HighBpp = IDS_HIGHCOLOR24; break;
|
||||||
|
case 16: HighBpp = IDS_HIGHCOLOR16; break;
|
||||||
|
case 8: HighBpp = IDS_256COLORS; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fill color depths combo box */
|
||||||
|
SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_BPPCOMBO,
|
||||||
|
CB_RESETCONTENT,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
num = HighBpp - IDS_256COLORS;
|
||||||
|
|
||||||
|
for (i = 0, Current = pInfo->DisplayDeviceList->Settings;
|
||||||
|
i <= num && Current != NULL;
|
||||||
|
i++, Current = Current->Flink)
|
||||||
|
{
|
||||||
|
TCHAR Buffer[64];
|
||||||
|
if (LoadString(hInst,
|
||||||
|
(IDS_256COLORS + i),
|
||||||
|
Buffer,
|
||||||
|
sizeof(Buffer) / sizeof(TCHAR)))
|
||||||
|
{
|
||||||
|
index = (DWORD)SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_BPPCOMBO,
|
||||||
|
CB_FINDSTRINGEXACT,
|
||||||
|
-1,
|
||||||
|
(LPARAM)Buffer);
|
||||||
|
if (index == (DWORD)CB_ERR)
|
||||||
|
{
|
||||||
|
index = (DWORD)SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_BPPCOMBO,
|
||||||
|
CB_ADDSTRING,
|
||||||
|
0,
|
||||||
|
(LPARAM)Buffer);
|
||||||
|
SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_BPPCOMBO,
|
||||||
|
CB_SETITEMDATA,
|
||||||
|
index,
|
||||||
|
Current->dmBitsPerPel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fill resolutions slider */
|
||||||
|
SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_GEOSLIDER,
|
||||||
|
TBM_CLEARTICS,
|
||||||
|
TRUE,
|
||||||
|
0);
|
||||||
|
SendDlgItemMessage(pInfo->hDisplayPage,
|
||||||
|
IDC_GEOSLIDER,
|
||||||
|
TBM_SETRANGE,
|
||||||
|
TRUE,
|
||||||
|
MAKELONG(0, pInfo->DisplayDeviceList->ResolutionsCount)); //extra 1 for full screen
|
||||||
|
|
||||||
|
UpdateDisplay(pInfo->hDisplayPage, pInfo, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
DisplayOnInit(PINFO pInfo)
|
DisplayOnInit(PINFO pInfo)
|
||||||
{
|
{
|
||||||
|
DISPLAY_DEVICE displayDevice;
|
||||||
|
DWORD iDevNum = 0;
|
||||||
|
BOOL GotDev = FALSE;
|
||||||
|
|
||||||
SetWindowPos(pInfo->hDisplayPage,
|
SetWindowPos(pInfo->hDisplayPage,
|
||||||
NULL,
|
NULL,
|
||||||
15,
|
15,
|
||||||
122,
|
110,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||||
|
@ -191,6 +542,21 @@ DisplayOnInit(PINFO pInfo)
|
||||||
sizeof(BITMAP),
|
sizeof(BITMAP),
|
||||||
&pInfo->bitmap);
|
&pInfo->bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get video cards list */
|
||||||
|
displayDevice.cb = (DWORD)sizeof(DISPLAY_DEVICE);
|
||||||
|
while (EnumDisplayDevices(NULL, iDevNum, &displayDevice, 0x1))
|
||||||
|
{
|
||||||
|
if ((displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) != 0)
|
||||||
|
{
|
||||||
|
if (AddDisplayDevice(pInfo, &displayDevice))
|
||||||
|
GotDev = TRUE;
|
||||||
|
}
|
||||||
|
iDevNum++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GotDev)
|
||||||
|
FillResolutionsAndColors(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -238,19 +604,45 @@ DisplayDlgProc(HWND hDlg,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WM_CLOSE:
|
case WM_HSCROLL:
|
||||||
|
{
|
||||||
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
if (pInfo->hRemote)
|
case TB_LINEUP:
|
||||||
DestroyIcon(pInfo->hRemote);
|
case TB_LINEDOWN:
|
||||||
|
case TB_PAGEUP:
|
||||||
|
case TB_PAGEDOWN:
|
||||||
|
case TB_TOP:
|
||||||
|
case TB_BOTTOM:
|
||||||
|
case TB_ENDTRACK:
|
||||||
|
{
|
||||||
|
DWORD newPosition = (DWORD)SendDlgItemMessage(hDlg, IDC_GEOSLIDER, TBM_GETPOS, 0, 0);
|
||||||
|
//OnResolutionChanged(hwndDlg, pGlobalData, newPosition, TRUE);
|
||||||
|
UpdateDisplay(hDlg, pInfo, TRUE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (pInfo->hColor)
|
case TB_THUMBTRACK:
|
||||||
DestroyIcon(pInfo->hColor);
|
//OnResolutionChanged(hDlg, pInfo, HIWORD(wParam), FALSE);
|
||||||
|
UpdateDisplay(hDlg, pInfo, TRUE);
|
||||||
if (pInfo->hSpectrum)
|
break;
|
||||||
DeleteObject(pInfo->hSpectrum);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_CLOSE:
|
||||||
|
{
|
||||||
|
if (pInfo->hRemote)
|
||||||
|
DestroyIcon(pInfo->hRemote);
|
||||||
|
|
||||||
|
if (pInfo->hColor)
|
||||||
|
DestroyIcon(pInfo->hColor);
|
||||||
|
|
||||||
|
if (pInfo->hSpectrum)
|
||||||
|
DeleteObject(pInfo->hSpectrum);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,22 +27,23 @@ BEGIN
|
||||||
ICON "", IDC_REMICON, 15,19,20,20
|
ICON "", IDC_REMICON, 15,19,20,20
|
||||||
ICON "", IDC_COLORSICON, 15,98,20,20
|
ICON "", IDC_COLORSICON, 15,98,20,20
|
||||||
LTEXT "Set the screen size of your remote desktop. Drag the slider to the far right to go fullscreen",IDC_STATIC,53,22,175,21
|
LTEXT "Set the screen size of your remote desktop. Drag the slider to the far right to go fullscreen",IDC_STATIC,53,22,175,21
|
||||||
CONTROL "",IDC_GEOSLIDER,"msctls_trackbar32",WS_TABSTOP,56,49,124,15
|
CONTROL "", IDC_GEOSLIDER, "msctls_trackbar32", TBS_AUTOTICKS | WS_TABSTOP, 56, 42, 124, 17
|
||||||
COMBOBOX IDC_BPPCOMBO,56,102,128,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_BPPCOMBO,56,102,128,80, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "",IDC_COLORIMAGE,"Static",SS_OWNERDRAW | SS_SUNKEN, 56,121,127,13
|
CONTROL "",IDC_COLORIMAGE,"Static",SS_OWNERDRAW | SS_SUNKEN, 56,121,127,10
|
||||||
LTEXT "Note: Settings on the remote computer might override this setting.",IDC_STATIC,56,143,165,18
|
LTEXT "Note: Settings on the remote computer might override this setting.",IDC_STATIC,56,143,165,18
|
||||||
LTEXT "Less",IDC_STATIC,35,52,15,8
|
LTEXT "Less",IDC_STATIC,35,42,15,8
|
||||||
LTEXT "More",IDC_STATIC,189,51,17,8
|
LTEXT "More",IDC_STATIC,189,42,17,8
|
||||||
|
LTEXT "", IDC_SETTINGS_RESOLUTION_TEXT, 56, 62, 124, 10, SS_CENTER
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_CONNECTDIALOG DIALOGEX 0, 0, 260, 277
|
IDD_CONNECTDIALOG DIALOGEX 0, 0, 260, 267
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Remote Desktop Connection"
|
CAPTION "Remote Desktop Connection"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Connect",IDOK,147,256,50,14
|
DEFPUSHBUTTON "Connect",IDOK,147,249,50,14
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,203,256,50,14
|
PUSHBUTTON "Cancel",IDCANCEL,203,249,50,14
|
||||||
CONTROL "",IDC_TAB,"SysTabControl32",0x0,7,54,246,198
|
CONTROL "",IDC_TAB,"SysTabControl32",0x0,7,54,246,190
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,4 +51,10 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_TAB_GENERAL "General"
|
IDS_TAB_GENERAL "General"
|
||||||
IDS_TAB_DISPLAY "Display"
|
IDS_TAB_DISPLAY "Display"
|
||||||
|
IDS_256COLORS "256 Colors"
|
||||||
|
IDS_HIGHCOLOR15 "High Color (15 bit)"
|
||||||
|
IDS_HIGHCOLOR16 "High Color (16 bit)"
|
||||||
|
IDS_HIGHCOLOR24 "True Color (24 bit)"
|
||||||
|
IDS_PIXEL "%lux%lu Pixels"
|
||||||
|
IDS_FULLSCREEN "Full Screen"
|
||||||
END
|
END
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
#define IDC_STATIC -1
|
||||||
|
|
||||||
#define IDD_CONNECTDIALOG 101
|
#define IDD_CONNECTDIALOG 101
|
||||||
#define IDD_GENERAL 105
|
#define IDD_GENERAL 105
|
||||||
#define IDS_TAB_DISPLAY 106
|
|
||||||
#define IDD_DISPLAY 107
|
#define IDD_DISPLAY 107
|
||||||
#define IDC_TAB 1003
|
#define IDC_TAB 1003
|
||||||
#define IDC_SERVERCOMBO 1007
|
#define IDC_SERVERCOMBO 1007
|
||||||
|
@ -9,6 +10,7 @@
|
||||||
#define IDC_OPEN 1010
|
#define IDC_OPEN 1010
|
||||||
#define IDC_GEOSLIDER 1012
|
#define IDC_GEOSLIDER 1012
|
||||||
#define IDC_BPPCOMBO 1013
|
#define IDC_BPPCOMBO 1013
|
||||||
|
#define IDC_SETTINGS_RESOLUTION_TEXT 1014
|
||||||
|
|
||||||
#define IDC_LOGONICON 1016
|
#define IDC_LOGONICON 1016
|
||||||
#define IDC_CONNICON 1017
|
#define IDC_CONNICON 1017
|
||||||
|
@ -19,10 +21,19 @@
|
||||||
#define IDB_SPECT 1017
|
#define IDB_SPECT 1017
|
||||||
|
|
||||||
#define IDC_COLORIMAGE 1018
|
#define IDC_COLORIMAGE 1018
|
||||||
#define IDS_TAB_GENERAL 1104
|
|
||||||
#define IDC_STATIC -1
|
|
||||||
|
|
||||||
#define IDI_LOGON 2000
|
#define IDI_LOGON 2000
|
||||||
#define IDI_CONN 2001
|
#define IDI_CONN 2001
|
||||||
#define IDI_REMOTE 2002
|
#define IDI_REMOTE 2002
|
||||||
#define IDI_COLORS 2003
|
#define IDI_COLORS 2003
|
||||||
|
#define IDI_MSTSC 2004
|
||||||
|
|
||||||
|
#define IDS_TAB_DISPLAY 3000
|
||||||
|
#define IDS_TAB_GENERAL 3001
|
||||||
|
#define IDS_PIXEL 3006
|
||||||
|
#define IDS_FULLSCREEN 3007
|
||||||
|
|
||||||
|
#define IDS_256COLORS 4000
|
||||||
|
#define IDS_HIGHCOLOR15 4001
|
||||||
|
#define IDS_HIGHCOLOR16 4002
|
||||||
|
#define IDS_HIGHCOLOR24 4003
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
|
|
||||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
//1 24 DISCARDABLE "manifest.xml"
|
1 24 DISCARDABLE "manifest.xml"
|
||||||
|
|
||||||
|
IDI_MSTSC ICON "res/mstsc.ico"
|
||||||
IDI_LOGON ICON "res/logon.ico"
|
IDI_LOGON ICON "res/logon.ico"
|
||||||
IDI_CONN ICON "res/connection.ico"
|
IDI_CONN ICON "res/connection.ico"
|
||||||
IDI_REMOTE ICON "res/remote.ico"
|
IDI_REMOTE ICON "res/remote.ico"
|
||||||
|
|
|
@ -18,18 +18,12 @@
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef _WIN32_WCE
|
|
||||||
#define MYWINCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <winsock2.h> /* winsock2.h first */
|
#include <winsock2.h> /* winsock2.h first */
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#ifdef MYWINCE
|
|
||||||
#include <aygshell.h> /* aygshell.lib */
|
|
||||||
#endif /* MYWINCE */
|
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "uimain.h"
|
#include "uimain.h"
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
extern char g_username[];
|
extern char g_username[];
|
||||||
extern char g_hostname[];
|
extern char g_hostname[];
|
||||||
|
@ -69,9 +63,6 @@ static int g_clip_right = 800;
|
||||||
static int g_clip_bottom = 600;
|
static int g_clip_bottom = 600;
|
||||||
static RECT g_wnd_clip; /* this client area of whats actually visable */
|
static RECT g_wnd_clip; /* this client area of whats actually visable */
|
||||||
/* set from WM_SIZE */
|
/* set from WM_SIZE */
|
||||||
#ifdef MYWINCE
|
|
||||||
static int g_sip_up = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
static void
|
static void
|
||||||
|
@ -665,79 +656,6 @@ handle_WM_VSCROLL(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MYWINCE
|
|
||||||
/*****************************************************************************/
|
|
||||||
static LRESULT
|
|
||||||
handle_WM_SETTINGCHANGE(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
SIPINFO si;
|
|
||||||
SHMENUBARINFO mb;
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
int w;
|
|
||||||
int h;
|
|
||||||
int style;
|
|
||||||
|
|
||||||
ZeroMemory(&si, sizeof(SIPINFO));
|
|
||||||
si.cbSize = sizeof(SIPINFO);
|
|
||||||
SHSipInfo(SPI_GETSIPINFO, lParam, &si, 0);
|
|
||||||
x = si.rcVisibleDesktop.left;
|
|
||||||
y = si.rcVisibleDesktop.top;
|
|
||||||
w = si.rcVisibleDesktop.right - x;
|
|
||||||
h = si.rcVisibleDesktop.bottom - y;
|
|
||||||
/* get rid of menu */
|
|
||||||
DestroyWindow(SHFindMenuBar(g_Wnd));
|
|
||||||
if (si.fdwFlags & SIPF_ON)
|
|
||||||
{
|
|
||||||
g_sip_up = 1; /* used for WM_SETFOCUS */
|
|
||||||
ZeroMemory(&mb, sizeof(SHMENUBARINFO));
|
|
||||||
mb.cbSize = sizeof(SHMENUBARINFO);
|
|
||||||
mb.hwndParent = g_Wnd;
|
|
||||||
mb.dwFlags = SHCMBF_EMPTYBAR;
|
|
||||||
SHCreateMenuBar(&mb);
|
|
||||||
MoveWindow(g_Wnd, x, y, w, h, FALSE);
|
|
||||||
SHFullScreen(g_Wnd, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON |
|
|
||||||
SHFS_SHOWSTARTICON);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_sip_up = 0;
|
|
||||||
if (g_fullscreen)
|
|
||||||
{
|
|
||||||
MoveWindow(g_Wnd, 0, 0, g_screen_width, g_screen_height, FALSE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MoveWindow(g_Wnd, x, y, w, h, FALSE);
|
|
||||||
}
|
|
||||||
if ((g_fullscreen && g_width <= g_screen_width &&
|
|
||||||
g_height <= g_screen_height) ||
|
|
||||||
(!g_fullscreen && g_width <= w && g_height <= h))
|
|
||||||
{
|
|
||||||
style = GetWindowLong(g_Wnd, GWL_STYLE);
|
|
||||||
if (style & WS_HSCROLL)
|
|
||||||
{
|
|
||||||
style &= ~WS_HSCROLL;
|
|
||||||
style &= ~WS_VSCROLL;
|
|
||||||
SetWindowLong(g_Wnd, GWL_STYLE, style);
|
|
||||||
g_xscroll = 0;
|
|
||||||
g_yscroll = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (g_fullscreen)
|
|
||||||
{
|
|
||||||
SHFullScreen(g_Wnd, SHFS_HIDETASKBAR | SHFS_SHOWSIPBUTTON |
|
|
||||||
SHFS_SHOWSTARTICON);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SHFullScreen(g_Wnd, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON |
|
|
||||||
SHFS_SHOWSTARTICON);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* MYWINCE */
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
LRESULT CALLBACK
|
LRESULT CALLBACK
|
||||||
|
@ -793,18 +711,8 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
return handle_WM_HSCROLL(hWnd, message, wParam, lParam);
|
return handle_WM_HSCROLL(hWnd, message, wParam, lParam);
|
||||||
case WM_VSCROLL:
|
case WM_VSCROLL:
|
||||||
return handle_WM_VSCROLL(hWnd, message, wParam, lParam);
|
return handle_WM_VSCROLL(hWnd, message, wParam, lParam);
|
||||||
#ifdef MYWINCE
|
|
||||||
case WM_SETTINGCHANGE:
|
|
||||||
return handle_WM_SETTINGCHANGE(hWnd, message, wParam, lParam);
|
|
||||||
#endif /* MYWINCE */
|
|
||||||
case WM_SETFOCUS:
|
case WM_SETFOCUS:
|
||||||
mi_check_modifier();
|
mi_check_modifier();
|
||||||
#ifdef MYWINCE
|
|
||||||
if (g_sip_up)
|
|
||||||
{
|
|
||||||
SHSipPreference(hWnd, SIP_UP);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||||
default:
|
default:
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||||
|
@ -854,6 +762,8 @@ mi_create_window(void)
|
||||||
str_to_uni(classname, "rdesktop");
|
str_to_uni(classname, "rdesktop");
|
||||||
wc.lpszClassName = classname;
|
wc.lpszClassName = classname;
|
||||||
str_to_uni(caption, "ReactOS Remote Desktop");
|
str_to_uni(caption, "ReactOS Remote Desktop");
|
||||||
|
wc.hIcon = LoadIcon(g_Instance,
|
||||||
|
MAKEINTRESOURCE(IDI_MSTSC));
|
||||||
/* Register the window class. */
|
/* Register the window class. */
|
||||||
if (!RegisterClass(&wc))
|
if (!RegisterClass(&wc))
|
||||||
{
|
{
|
||||||
|
@ -863,21 +773,7 @@ mi_create_window(void)
|
||||||
rc.right = rc.left + UI_MIN(g_width, g_screen_width);
|
rc.right = rc.left + UI_MIN(g_width, g_screen_width);
|
||||||
rc.top = 0;
|
rc.top = 0;
|
||||||
rc.bottom = rc.top + UI_MIN(g_height, g_screen_height);
|
rc.bottom = rc.top + UI_MIN(g_height, g_screen_height);
|
||||||
#ifdef MYWINCE
|
|
||||||
SHInitExtraControls();
|
|
||||||
x = CW_USEDEFAULT;
|
|
||||||
y = CW_USEDEFAULT;
|
|
||||||
w = CW_USEDEFAULT;
|
|
||||||
h = CW_USEDEFAULT;
|
|
||||||
style = WS_VISIBLE;
|
|
||||||
if (g_fullscreen)
|
|
||||||
{
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
w = g_screen_width;
|
|
||||||
h = g_screen_height;
|
|
||||||
}
|
|
||||||
#else /* MYWINCE */
|
|
||||||
if (g_fullscreen)
|
if (g_fullscreen)
|
||||||
{
|
{
|
||||||
style = WS_POPUP;
|
style = WS_POPUP;
|
||||||
|
@ -896,7 +792,7 @@ mi_create_window(void)
|
||||||
y = CW_USEDEFAULT;
|
y = CW_USEDEFAULT;
|
||||||
w = rc.right - rc.left;
|
w = rc.right - rc.left;
|
||||||
h = rc.bottom - rc.top;
|
h = rc.bottom - rc.top;
|
||||||
#endif /* MYWINCE */
|
|
||||||
g_Wnd = CreateWindow(wc.lpszClassName, caption,
|
g_Wnd = CreateWindow(wc.lpszClassName, caption,
|
||||||
style, x, y, w, h,
|
style, x, y, w, h,
|
||||||
(HWND) NULL, (HMENU) NULL, g_Instance,
|
(HWND) NULL, (HMENU) NULL, g_Instance,
|
||||||
|
@ -915,26 +811,9 @@ mi_create_window(void)
|
||||||
}
|
}
|
||||||
UpdateWindow(g_Wnd);
|
UpdateWindow(g_Wnd);
|
||||||
|
|
||||||
#ifdef MYWINCE
|
|
||||||
if (g_fullscreen)
|
|
||||||
{
|
|
||||||
SHFullScreen(g_Wnd, SHFS_HIDETASKBAR | SHFS_SHOWSIPBUTTON |
|
|
||||||
SHFS_SHOWSTARTICON);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SHFullScreen(g_Wnd, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON |
|
|
||||||
SHFS_SHOWSTARTICON);
|
|
||||||
}
|
|
||||||
#endif /* MYWINCE */
|
|
||||||
|
|
||||||
/* WinCE doesn't have WSAAsyncSelect */
|
|
||||||
#ifdef MYWINCE
|
|
||||||
SetTimer(g_Wnd, 1, 1000 / 60, 0); /* 60 per second */
|
|
||||||
#else /* MYWINCE */
|
|
||||||
WSAAsyncSelect(g_tcp_sck, g_Wnd, WM_APP + 1, FD_READ);
|
WSAAsyncSelect(g_tcp_sck, g_Wnd, WM_APP + 1, FD_READ);
|
||||||
SetTimer(g_Wnd, 1, 333, 0);
|
SetTimer(g_Wnd, 1, 333, 0);
|
||||||
#endif /* MYWINCE */
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1151,7 +1030,7 @@ mi_process_a_param(char * param1, int state)
|
||||||
{
|
{
|
||||||
state = 0;
|
state = 0;
|
||||||
g_server_depth = atol(param1);
|
g_server_depth = atol(param1);
|
||||||
if (g_server_depth != 8 && g_server_depth != 15 && g_server_depth != 16)
|
if (g_server_depth != 8 && g_server_depth != 15 && g_server_depth != 16 && g_server_depth != 24)
|
||||||
{
|
{
|
||||||
mi_error("invalid server bpp\r\n");
|
mi_error("invalid server bpp\r\n");
|
||||||
}
|
}
|
||||||
|
@ -1207,31 +1086,19 @@ mi_post_param(void)
|
||||||
}
|
}
|
||||||
else if (g_workarea)
|
else if (g_workarea)
|
||||||
{
|
{
|
||||||
#ifdef MYWINCE
|
|
||||||
g_xoff = 0;
|
|
||||||
g_yoff = 0;
|
|
||||||
g_width = g_screen_width;
|
|
||||||
g_height = g_screen_height - 26; /* start menu size is 26 */
|
|
||||||
#else /* MYWINCE */
|
|
||||||
g_xoff = GetSystemMetrics(SM_CXEDGE) * 2;
|
g_xoff = GetSystemMetrics(SM_CXEDGE) * 2;
|
||||||
g_yoff = GetSystemMetrics(SM_CYCAPTION) +
|
g_yoff = GetSystemMetrics(SM_CYCAPTION) +
|
||||||
GetSystemMetrics(SM_CYEDGE) * 2;
|
GetSystemMetrics(SM_CYEDGE) * 2;
|
||||||
g_width = g_screen_width;
|
g_width = g_screen_width;
|
||||||
g_height = g_screen_height;
|
g_height = g_screen_height;
|
||||||
g_height = (g_height - g_yoff) - g_xoff - 20; /* todo */
|
g_height = (g_height - g_yoff) - g_xoff - 20; /* todo */
|
||||||
#endif /* MYWINCE */
|
|
||||||
g_width_height_set = 1;
|
g_width_height_set = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef MYWINCE
|
|
||||||
g_xoff = 0;
|
|
||||||
g_yoff = 0;
|
|
||||||
#else /* MYWINCE */
|
|
||||||
g_xoff = GetSystemMetrics(SM_CXEDGE) * 2;
|
g_xoff = GetSystemMetrics(SM_CXEDGE) * 2;
|
||||||
g_yoff = GetSystemMetrics(SM_CYCAPTION) +
|
g_yoff = GetSystemMetrics(SM_CYCAPTION) +
|
||||||
GetSystemMetrics(SM_CYEDGE) * 2;
|
GetSystemMetrics(SM_CYEDGE) * 2;
|
||||||
#endif /* MYWINCE */
|
|
||||||
}
|
}
|
||||||
g_width = g_width & (~3);
|
g_width = g_width & (~3);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -1260,11 +1127,8 @@ mi_check_config_file(void)
|
||||||
valueindex = 0;
|
valueindex = 0;
|
||||||
vname[vnameindex] = 0;
|
vname[vnameindex] = 0;
|
||||||
value[valueindex] = 0;
|
value[valueindex] = 0;
|
||||||
#ifdef MYWINCE
|
|
||||||
str_to_uni(filename, "\\My Documents\\winrdesktop.ini");
|
|
||||||
#else /* MYWINCE */
|
|
||||||
str_to_uni(filename, ".\\winrdesktop.ini");
|
str_to_uni(filename, ".\\winrdesktop.ini");
|
||||||
#endif /* MYWINCE */
|
|
||||||
fd = CreateFile(filename, GENERIC_READ,
|
fd = CreateFile(filename, GENERIC_READ,
|
||||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||||
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
@ -1334,9 +1198,7 @@ mi_process_cl(LPTSTR lpCmdLine)
|
||||||
{
|
{
|
||||||
char param[256];
|
char param[256];
|
||||||
char param1[256];
|
char param1[256];
|
||||||
#ifndef MYWINCE
|
|
||||||
TCHAR l_username[256];
|
TCHAR l_username[256];
|
||||||
#endif
|
|
||||||
DWORD size;
|
DWORD size;
|
||||||
int len;
|
int len;
|
||||||
int i;
|
int i;
|
||||||
|
@ -1347,8 +1209,7 @@ mi_process_cl(LPTSTR lpCmdLine)
|
||||||
strcpy(g_username, "pda");
|
strcpy(g_username, "pda");
|
||||||
/* get username and convert it from unicode */
|
/* get username and convert it from unicode */
|
||||||
size = 255;
|
size = 255;
|
||||||
#ifndef MYWINCE
|
|
||||||
/* WinCE doesn't have GetUserName */
|
|
||||||
if (GetUserName(l_username, &size))
|
if (GetUserName(l_username, &size))
|
||||||
{
|
{
|
||||||
for (i = size; i >= 0; i--)
|
for (i = size; i >= 0; i--)
|
||||||
|
@ -1361,7 +1222,7 @@ mi_process_cl(LPTSTR lpCmdLine)
|
||||||
{
|
{
|
||||||
mi_show_error("GetUserName");
|
mi_show_error("GetUserName");
|
||||||
}
|
}
|
||||||
#endif /* MYWINCE */
|
|
||||||
/* get computer name */
|
/* get computer name */
|
||||||
if (gethostname(g_hostname, 255) != 0)
|
if (gethostname(g_hostname, 255) != 0)
|
||||||
{
|
{
|
||||||
|
@ -1605,12 +1466,8 @@ mi_screen_copy(int x, int y, int cx, int cy, int srcx, int srcy)
|
||||||
HRGN rgn;
|
HRGN rgn;
|
||||||
int ok_to_ScrollWindowEx;
|
int ok_to_ScrollWindowEx;
|
||||||
|
|
||||||
/* WinCE can't scroll in 2 directions at once */
|
|
||||||
#ifdef MYWINCE
|
|
||||||
ok_to_ScrollWindowEx = cx == 0 || cy == 0;
|
|
||||||
#else /* MYWINCE */
|
|
||||||
ok_to_ScrollWindowEx = 1;
|
ok_to_ScrollWindowEx = 1;
|
||||||
#endif /* MYWINCE */
|
|
||||||
if (!ok_to_ScrollWindowEx)
|
if (!ok_to_ScrollWindowEx)
|
||||||
{
|
{
|
||||||
rgn = CreateRectRgn(x - g_xscroll, y - g_yscroll,
|
rgn = CreateRectRgn(x - g_xscroll, y - g_yscroll,
|
||||||
|
@ -1667,9 +1524,6 @@ mi_create_cursor(unsigned int x, unsigned int y,
|
||||||
int width, int height,
|
int width, int height,
|
||||||
unsigned char * andmask, unsigned char * xormask)
|
unsigned char * andmask, unsigned char * xormask)
|
||||||
{
|
{
|
||||||
#ifdef MYWINCE
|
|
||||||
return (void *) 1;
|
|
||||||
#else /* MYWINCE */
|
|
||||||
HCURSOR hCur;
|
HCURSOR hCur;
|
||||||
|
|
||||||
hCur = CreateCursor(g_Instance, x, y, width, height, andmask, xormask);
|
hCur = CreateCursor(g_Instance, x, y, width, height, andmask, xormask);
|
||||||
|
@ -1678,32 +1532,25 @@ mi_create_cursor(unsigned int x, unsigned int y,
|
||||||
hCur = LoadCursor(NULL, IDC_ARROW);
|
hCur = LoadCursor(NULL, IDC_ARROW);
|
||||||
}
|
}
|
||||||
return hCur;
|
return hCur;
|
||||||
#endif /* MYWINCE */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void
|
void
|
||||||
mi_destroy_cursor(void * cursor)
|
mi_destroy_cursor(void * cursor)
|
||||||
{
|
{
|
||||||
#ifdef MYWINCE
|
|
||||||
#else /* MYWINCE */
|
|
||||||
if (g_cursor == cursor)
|
if (g_cursor == cursor)
|
||||||
{
|
{
|
||||||
g_cursor = 0;
|
g_cursor = 0;
|
||||||
}
|
}
|
||||||
DestroyCursor(cursor);
|
DestroyCursor(cursor);
|
||||||
#endif /* MYWINCE */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void
|
void
|
||||||
mi_set_cursor(void * cursor)
|
mi_set_cursor(void * cursor)
|
||||||
{
|
{
|
||||||
#ifdef MYWINCE
|
|
||||||
#else /* MYWINCE */
|
|
||||||
g_cursor = cursor;
|
g_cursor = cursor;
|
||||||
SetCursor(g_cursor);
|
SetCursor(g_cursor);
|
||||||
#endif /* MYWINCE */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue