ReactOS 0.4.16-dev-297-gc569aee
connectdialog.c File Reference
#include "precomp.h"
#include <winreg.h>
#include <commdlg.h>
Include dependency graph for connectdialog.c:

Go to the source code of this file.

Macros

#define MAX_KEY_NAME   255
 

Functions

static VOID ReLoadGeneralPage (PINFO pInfo)
 
static VOID ReLoadDisplayPage (PINFO pInfo)
 
static VOID DoOpenFile (PINFO pInfo)
 
static VOID DoSaveAs (PINFO pInfo)
 
static VOID OnTabWndSelChange (PINFO pInfo)
 
static VOID LoadUsernameHint (HWND hDlg, INT iCur)
 
static VOID FillServerAddressCombo (PINFO pInfo)
 
static VOID GeneralOnInit (HWND hwnd, PINFO pInfo)
 
INT_PTR CALLBACK GeneralDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 
static PSETTINGS_ENTRY GetPossibleSettings (IN LPCWSTR lpDeviceName, OUT DWORD *pSettingsCount, OUT PSETTINGS_ENTRY *CurrentSettings)
 
static BOOL AddDisplayDevice (PINFO pInfo, PDISPLAY_DEVICEW DisplayDevice)
 
static VOID OnResolutionChanged (PINFO pInfo, INT position)
 
static VOID FillResolutionsAndColors (PINFO pInfo)
 
static VOID DisplayOnInit (HWND hwnd, PINFO pInfo)
 
INT_PTR CALLBACK DisplayDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 
static BOOL OnMainCreate (HWND hwnd, PRDPSETTINGS pRdpSettings)
 
static void Cleanup (PINFO pInfo)
 
static INT_PTR CALLBACK DlgProc (HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
 
BOOL OpenRDPConnectDialog (HINSTANCE hInstance, PRDPSETTINGS pRdpSettings)
 

Variables

HINSTANCE hInst
 

Macro Definition Documentation

◆ MAX_KEY_NAME

#define MAX_KEY_NAME   255

Definition at line 26 of file connectdialog.c.

Function Documentation

◆ AddDisplayDevice()

static BOOL AddDisplayDevice ( PINFO  pInfo,
PDISPLAY_DEVICEW  DisplayDevice 
)
static

Definition at line 501 of file connectdialog.c.

502{
503 PDISPLAY_DEVICE_ENTRY newEntry = NULL;
505 LPWSTR name = NULL;
506 LPWSTR key = NULL;
507 LPWSTR devid = NULL;
508 SIZE_T descriptionSize, nameSize, keySize, devidSize;
509 PSETTINGS_ENTRY Current;
510 DWORD ResolutionsCount = 1;
511 DWORD i;
512
513 newEntry = HeapAlloc(GetProcessHeap(),
514 0,
515 sizeof(DISPLAY_DEVICE_ENTRY));
516 if (!newEntry) goto ByeBye;
517 ZeroMemory(newEntry, sizeof(DISPLAY_DEVICE_ENTRY));
518
519 newEntry->Settings = GetPossibleSettings(DisplayDevice->DeviceName,
520 &newEntry->SettingsCount,
521 &newEntry->CurrentSettings);
522 if (!newEntry->Settings) goto ByeBye;
523
527
528 /* Count different resolutions */
529 for (Current = newEntry->Settings; Current != NULL; Current = Current->Flink)
530 {
531 if (Current->Flink != NULL &&
532 ((Current->dmPelsWidth != Current->Flink->dmPelsWidth) &&
533 (Current->dmPelsHeight != Current->Flink->dmPelsHeight)))
534 {
535 ResolutionsCount++;
536 }
537 }
538
540 0,
541 ResolutionsCount * (sizeof(RESOLUTION_INFO) + 1));
542 if (!newEntry->Resolutions) goto ByeBye;
543
544 newEntry->ResolutionsCount = ResolutionsCount;
545
546 /* Fill resolutions infos */
547 for (Current = newEntry->Settings, i = 0; Current != NULL; Current = Current->Flink)
548 {
549 if (Current->Flink == NULL ||
550 (Current->Flink != NULL &&
551 ((Current->dmPelsWidth != Current->Flink->dmPelsWidth) &&
552 (Current->dmPelsHeight != Current->Flink->dmPelsHeight))))
553 {
554 newEntry->Resolutions[i].dmPelsWidth = Current->dmPelsWidth;
555 newEntry->Resolutions[i].dmPelsHeight = Current->dmPelsHeight;
556 i++;
557 }
558 }
559
560 /* fullscreen */
563
564 descriptionSize = (wcslen(DisplayDevice->DeviceString) + 1) * sizeof(WCHAR);
565 description = HeapAlloc(GetProcessHeap(), 0, descriptionSize);
566 if (!description) goto ByeBye;
567
568 nameSize = (wcslen(DisplayDevice->DeviceName) + 1) * sizeof(WCHAR);
569 name = HeapAlloc(GetProcessHeap(), 0, nameSize);
570 if (!name) goto ByeBye;
571
572 keySize = (wcslen(DisplayDevice->DeviceKey) + 1) * sizeof(WCHAR);
573 key = HeapAlloc(GetProcessHeap(), 0, keySize);
574 if (!key) goto ByeBye;
575
576 devidSize = (wcslen(DisplayDevice->DeviceID) + 1) * sizeof(WCHAR);
577 devid = HeapAlloc(GetProcessHeap(), 0, devidSize);
578 if (!devid) goto ByeBye;
579
580 memcpy(description, DisplayDevice->DeviceString, descriptionSize);
581 memcpy(name, DisplayDevice->DeviceName, nameSize);
582 memcpy(key, DisplayDevice->DeviceKey, keySize);
583 memcpy(devid, DisplayDevice->DeviceID, devidSize);
584 newEntry->DeviceDescription = description;
585 newEntry->DeviceName = name;
586 newEntry->DeviceKey = key;
587 newEntry->DeviceID = devid;
588 newEntry->DeviceStateFlags = DisplayDevice->StateFlags;
589 newEntry->Flink = pInfo->DisplayDeviceList;
590 pInfo->DisplayDeviceList = newEntry;
591 return TRUE;
592
593ByeBye:
594 if (newEntry != NULL)
595 {
596 if (newEntry->Settings != NULL)
597 {
598 Current = newEntry->Settings;
599 while (Current != NULL)
600 {
601 PSETTINGS_ENTRY Next = Current->Flink;
602 HeapFree(GetProcessHeap(), 0, Current);
603 Current = Next;
604 }
605 }
606 if (newEntry->Resolutions != NULL)
607 HeapFree(GetProcessHeap(), 0, newEntry->Resolutions);
608 HeapFree(GetProcessHeap(), 0, newEntry);
609 }
610 if (description != NULL)
612 if (name != NULL)
614 if (key != NULL)
616 if (devid != NULL)
617 HeapFree(GetProcessHeap(), 0, devid);
618 return FALSE;
619}
static PSETTINGS_ENTRY GetPossibleSettings(IN LPCWSTR lpDeviceName, OUT DWORD *pSettingsCount, OUT PSETTINGS_ENTRY *CurrentSettings)
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
WCHAR DeviceName[32]
Definition: wingdi.h:2818
DWORD StateFlags
Definition: wingdi.h:2820
WCHAR DeviceString[128]
Definition: wingdi.h:2819
WCHAR DeviceKey[128]
Definition: wingdi.h:2822
WCHAR DeviceID[128]
Definition: wingdi.h:2821
Definition: precomp.h:68
PRESOLUTION_INFO Resolutions
Definition: precomp.h:77
struct _DISPLAY_DEVICE_ENTRY * Flink
Definition: precomp.h:69
DWORD SettingsCount
Definition: precomp.h:76
SETTINGS_ENTRY InitialSettings
Definition: precomp.h:80
PSETTINGS_ENTRY CurrentSettings
Definition: precomp.h:79
DWORD ResolutionsCount
Definition: precomp.h:78
DWORD DeviceStateFlags
Definition: precomp.h:74
LPWSTR DeviceID
Definition: precomp.h:73
LPWSTR DeviceDescription
Definition: precomp.h:70
PSETTINGS_ENTRY Settings
Definition: precomp.h:75
LPWSTR DeviceKey
Definition: precomp.h:72
LPWSTR DeviceName
Definition: precomp.h:71
PDISPLAY_DEVICE_ENTRY DisplayDeviceList
Definition: precomp.h:86
DWORD dmPelsWidth
Definition: precomp.h:54
DWORD dmPelsHeight
Definition: precomp.h:55
Definition: precomp.h:59
DWORD dmPelsHeight
Definition: precomp.h:64
struct _SETTINGS_ENTRY * Flink
Definition: precomp.h:61
DWORD dmBitsPerPel
Definition: precomp.h:62
DWORD dmPelsWidth
Definition: precomp.h:63
Definition: copy.c:22
Definition: name.c:39
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define ZeroMemory
Definition: winbase.h:1737
const char * description
Definition: directx.c:2497
#define SM_CYSCREEN
Definition: winuser.h:963
#define SM_CXSCREEN
Definition: winuser.h:962
int WINAPI GetSystemMetrics(_In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by DisplayOnInit().

◆ Cleanup()

static void Cleanup ( PINFO  pInfo)
static

Definition at line 1122 of file connectdialog.c.

1123{
1124 if (pInfo)
1125 {
1126 if (pInfo->hMstscSm)
1127 DestroyIcon(pInfo->hMstscSm);
1128 if (pInfo->hMstscLg)
1129 DestroyIcon(pInfo->hMstscLg);
1130 if (pInfo->hHeader)
1131 DeleteObject(pInfo->hHeader);
1132 if (pInfo->hSpectrum)
1133 DeleteObject(pInfo->hSpectrum);
1134 if (pInfo->hRemote)
1135 DestroyIcon(pInfo->hRemote);
1136 if (pInfo->hLogon)
1137 DestroyIcon(pInfo->hLogon);
1138 if (pInfo->hConn)
1139 DestroyIcon(pInfo->hConn);
1140 if (pInfo->hColor)
1141 DestroyIcon(pInfo->hColor);
1143 0,
1144 pInfo);
1145 }
1146}
pKey DeleteObject()
HICON hMstscLg
Definition: precomp.h:95
HICON hLogon
Definition: precomp.h:96
HBITMAP hHeader
Definition: precomp.h:92
HICON hColor
Definition: precomp.h:99
HICON hConn
Definition: precomp.h:97
HBITMAP hSpectrum
Definition: precomp.h:100
HICON hMstscSm
Definition: precomp.h:94
HICON hRemote
Definition: precomp.h:98
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2105

◆ DisplayDlgProc()

INT_PTR CALLBACK DisplayDlgProc ( HWND  hDlg,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 930 of file connectdialog.c.

934{
935 PINFO pInfo = (PINFO)GetWindowLongPtrW(hDlg,
937
938 switch (message)
939 {
940 case WM_INITDIALOG:
941 DisplayOnInit(hDlg, (PINFO)lParam);
942 return TRUE;
943
944 case WM_DRAWITEM:
945 {
946 LPDRAWITEMSTRUCT lpDrawItem;
947 lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
948 if(lpDrawItem->CtlID == IDC_COLORIMAGE)
949 {
950 HDC hdcMem;
951 HBITMAP hSpecOld;
952 hdcMem = CreateCompatibleDC(lpDrawItem->hDC);
953 if (hdcMem != NULL)
954 {
955 hSpecOld = SelectObject(hdcMem, pInfo->hSpectrum);
956 StretchBlt(lpDrawItem->hDC,
957 lpDrawItem->rcItem.left,
958 lpDrawItem->rcItem.top,
959 lpDrawItem->rcItem.right - lpDrawItem->rcItem.left,
960 lpDrawItem->rcItem.bottom - lpDrawItem->rcItem.top,
961 hdcMem,
962 0,
963 0,
964 pInfo->bitmap.bmWidth,
965 pInfo->bitmap.bmHeight,
966 SRCCOPY);
967 SelectObject(hdcMem, hSpecOld);
969 }
970 }
971 break;
972 }
973
974 case WM_HSCROLL:
975 {
976 switch (LOWORD(wParam))
977 {
978 case TB_LINEUP:
979 case TB_LINEDOWN:
980 case TB_PAGEUP:
981 case TB_PAGEDOWN:
982 case TB_TOP:
983 case TB_BOTTOM:
984 case TB_ENDTRACK:
985 {
986 INT newPosition = (DWORD)SendDlgItemMessageW(hDlg, IDC_GEOSLIDER, TBM_GETPOS, 0, 0);
987 OnResolutionChanged(pInfo, newPosition);
988 break;
989 }
990
991 case TB_THUMBTRACK:
993 break;
994 }
995 break;
996 }
997
998 case WM_CLOSE:
999 {
1000 if (pInfo->hRemote)
1001 DestroyIcon(pInfo->hRemote);
1002
1003 if (pInfo->hColor)
1004 DestroyIcon(pInfo->hColor);
1005
1006 if (pInfo->hSpectrum)
1007 DeleteObject(pInfo->hSpectrum);
1008
1009 break;
1010 }
1011
1012 break;
1013 }
1014 return 0;
1015}
struct _INFO * PINFO
#define IDC_COLORIMAGE
Definition: resource.h:28
#define IDC_GEOSLIDER
Definition: resource.h:19
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
static VOID DisplayOnInit(HWND hwnd, PINFO pInfo)
static VOID OnResolutionChanged(PINFO pInfo, INT position)
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:88
#define DWORD
Definition: nt_native.h:44
#define LOWORD(l)
Definition: pedump.c:82
#define TB_TOP
Definition: commctrl.h:2084
#define TB_ENDTRACK
Definition: commctrl.h:2086
#define TB_PAGEUP
Definition: commctrl.h:2080
#define TB_BOTTOM
Definition: commctrl.h:2085
#define TBM_GETPOS
Definition: commctrl.h:2036
#define TB_PAGEDOWN
Definition: commctrl.h:2081
#define TB_THUMBTRACK
Definition: commctrl.h:2083
#define TB_LINEUP
Definition: commctrl.h:2078
#define TB_LINEDOWN
Definition: commctrl.h:2079
Definition: precomp.h:84
BITMAP bitmap
Definition: precomp.h:101
Definition: tftpd.h:60
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define GWLP_USERDATA
Definition: treelist.c:63
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
HDC hdcMem
Definition: welcome.c:104
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
#define SRCCOPY
Definition: wingdi.h:333
BOOL WINAPI DeleteDC(_In_ HDC)
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
#define WM_CLOSE
Definition: winuser.h:1624
#define GetWindowLongPtrW
Definition: winuser.h:4832
#define WM_HSCROLL
Definition: winuser.h:1746
#define WM_INITDIALOG
Definition: winuser.h:1742
#define WM_DRAWITEM
Definition: winuser.h:1648
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by OnMainCreate().

◆ DisplayOnInit()

static VOID DisplayOnInit ( HWND  hwnd,
PINFO  pInfo 
)
static

Definition at line 845 of file connectdialog.c.

847{
848 DISPLAY_DEVICEW displayDevice;
849 DWORD iDevNum = 0;
850 BOOL GotDev = FALSE;
851
854 (LONG_PTR)pInfo);
855
856 pInfo->hDisplayPage = hwnd;
857
859 NULL,
860 2,
861 22,
862 0,
863 0,
865
866 pInfo->hRemote = LoadImageW(hInst,
869 32,
870 32,
872 if (pInfo->hRemote)
873 {
877 (WPARAM)pInfo->hRemote,
878 0);
879 }
880
881 pInfo->hColor = LoadImageW(hInst,
884 32,
885 32,
887 if (pInfo->hColor)
888 {
892 (WPARAM)pInfo->hColor,
893 0);
894 }
895
896 pInfo->hSpectrum = LoadImageW(hInst,
899 0,
900 0,
902 if (pInfo->hSpectrum)
903 {
904 GetObjectW(pInfo->hSpectrum,
905 sizeof(BITMAP),
906 &pInfo->bitmap);
907 }
908
909 /* Get video cards list */
910 displayDevice.cb = (DWORD)sizeof(DISPLAY_DEVICE);
911 while (EnumDisplayDevicesW(NULL, iDevNum, &displayDevice, 0x1))
912 {
913 if ((displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) != 0)
914 {
915 if (AddDisplayDevice(pInfo, &displayDevice))
916 GotDev = TRUE;
917 }
918 iDevNum++;
919 }
920
921 if (GotDev)
922 {
924 ReLoadDisplayPage(pInfo);
925 }
926}
#define IDC_REMICON
Definition: resource.h:26
#define IDI_REMOTE
Definition: resource.h:36
#define IDI_COLORS
Definition: resource.h:37
#define IDB_SPECT
Definition: resource.h:31
#define IDC_COLORSICON
Definition: resource.h:27
static VOID ReLoadDisplayPage(PINFO pInfo)
HINSTANCE hInst
Definition: connectdialog.c:28
static VOID FillResolutionsAndColors(PINFO pInfo)
static BOOL AddDisplayDevice(PINFO pInfo, PDISPLAY_DEVICEW DisplayDevice)
unsigned int BOOL
Definition: ntddk_ex.h:94
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
Definition: bl.h:1331
HWND hDisplayPage
Definition: precomp.h:91
BOOL WINAPI EnumDisplayDevicesW(LPCWSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEW lpDisplayDevice, DWORD dwFlags)
Definition: display.c:78
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
UINT_PTR WPARAM
Definition: windef.h:207
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
#define DISPLAY_DEVICE_PRIMARY_DEVICE
Definition: wingdi.h:1398
#define SWP_NOACTIVATE
Definition: winuser.h:1245
#define IMAGE_BITMAP
Definition: winuser.h:211
#define STM_SETICON
Definition: winuser.h:2095
#define IMAGE_ICON
Definition: winuser.h:212
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
Definition: cursoricon.c:2255
#define SWP_NOSIZE
Definition: winuser.h:1248
#define SWP_NOOWNERZORDER
Definition: winuser.h:1252
#define LR_DEFAULTCOLOR
Definition: winuser.h:1090
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SWP_NOZORDER
Definition: winuser.h:1250
#define SetWindowLongPtrW
Definition: winuser.h:5358

Referenced by DisplayDlgProc().

◆ DlgProc()

static INT_PTR CALLBACK DlgProc ( HWND  hDlg,
UINT  Message,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 1149 of file connectdialog.c.

1153{
1154 PINFO pInfo;
1155
1156 /* Get the window context */
1157 pInfo = (PINFO)GetWindowLongPtrW(hDlg,
1159 if (pInfo == NULL && Message != WM_INITDIALOG)
1160 {
1161 goto HandleDefaultMessage;
1162 }
1163
1164 switch(Message)
1165 {
1166 case WM_INITDIALOG:
1168 break;
1169
1170 case WM_COMMAND:
1171 {
1172 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
1173 {
1174 if (LOWORD(wParam) == IDOK )
1175 {
1176 SaveAllSettings(pInfo);
1178 }
1179 Cleanup(pInfo);
1180 EndDialog(hDlg, LOWORD(wParam));
1181 }
1182
1183 break;
1184 }
1185
1186 case WM_NOTIFY:
1187 {
1188 //INT idctrl;
1189 LPNMHDR pnmh;
1190 //idctrl = (int)wParam;
1191 pnmh = (LPNMHDR)lParam;
1192 if (//(pnmh->hwndFrom == pInfo->hSelf) &&
1193 (pnmh->idFrom == IDC_TAB) &&
1194 (pnmh->code == TCN_SELCHANGE))
1195 {
1196 OnTabWndSelChange(pInfo);
1197 }
1198
1199 break;
1200 }
1201
1202 case WM_PAINT:
1203 {
1204 PAINTSTRUCT ps;
1205 HDC hdc;
1206
1207 hdc = BeginPaint(hDlg, &ps);
1208 if (hdc != NULL)
1209 {
1211 if (hdcMem)
1212 {
1213 WCHAR szBuffer[32];
1214 RECT bmpRc, txtRc;
1215 LOGFONTW lf;
1216 HFONT hFont, hFontOld;
1217 HBITMAP hBmpOld;
1218
1219 GetClientRect(pInfo->hSelf, &bmpRc);
1220
1221 hBmpOld = SelectObject(hdcMem, pInfo->hHeader);
1223 0,
1224 0,
1225 bmpRc.right,
1226 pInfo->headerbitmap.bmHeight,
1227 hdcMem,
1228 0,
1229 0,
1230 pInfo->headerbitmap.bmWidth,
1231 pInfo->headerbitmap.bmHeight,
1232 SRCCOPY);
1233
1234 SelectObject(hdcMem, hBmpOld);
1235 txtRc.left = bmpRc.right / 4;
1236 txtRc.top = 10;
1237 txtRc.right = bmpRc.right * 3 / 4;
1238 txtRc.bottom = pInfo->headerbitmap.bmHeight / 2;
1239
1240 ZeroMemory(&lf, sizeof(LOGFONTW));
1241
1242 if (LoadStringW(hInst,
1244 szBuffer,
1245 sizeof(szBuffer) / sizeof(WCHAR)))
1246 {
1247 lf.lfHeight = 20;
1250 lf.lfWeight = FW_MEDIUM;
1251 wcscpy(lf.lfFaceName, L"Tahoma");
1252
1254 if (hFont)
1255 {
1256 hFontOld = SelectObject(hdc, hFont);
1257
1258 DPtoLP(hdc, (PPOINT)&txtRc, 2);
1259 SetTextColor(hdc, RGB(255,255,255));
1261 DrawTextW(hdc,
1262 szBuffer,
1263 -1,
1264 &txtRc,
1265 DT_BOTTOM | DT_SINGLELINE | DT_NOCLIP | DT_CENTER); //DT_CENTER makes the text visible in RTL layouts...
1266 SelectObject(hdc, hFontOld);
1268 }
1269 }
1270
1271 txtRc.left = bmpRc.right / 4;
1272 txtRc.top = txtRc.bottom - 5;
1273#ifdef __REACTOS__
1274 txtRc.right = bmpRc.right * 4 / 5;
1275#else
1276 txtRc.right = bmpRc.right * 3 / 4;
1277#endif
1278 txtRc.bottom = pInfo->headerbitmap.bmHeight * 9 / 10;
1279
1280 if (LoadStringW(hInst,
1282 szBuffer,
1283 sizeof(szBuffer) / sizeof(WCHAR)))
1284 {
1285 lf.lfHeight = 24;
1289 wcscpy(lf.lfFaceName, L"Tahoma");
1290
1292 if (hFont)
1293 {
1294 hFontOld = SelectObject(hdc, hFont);
1295
1296 DPtoLP(hdc, (PPOINT)&txtRc, 2);
1297 SetTextColor(hdc, RGB(255,255,255));
1299 DrawTextW(hdc,
1300 szBuffer,
1301 -1,
1302 &txtRc,
1304 SelectObject(hdc, hFontOld);
1306 }
1307 }
1308
1310 }
1311
1312 EndPaint(hDlg, &ps);
1313 }
1314
1315 break;
1316 }
1317
1318 case WM_CLOSE:
1319 {
1320 Cleanup(pInfo);
1321 EndDialog(hDlg, 0);
1322 }
1323 break;
1324
1325HandleDefaultMessage:
1326 default:
1327 return FALSE;
1328 }
1329
1330 return FALSE;
1331}
#define IDC_TAB
Definition: resource.h:12
VOID SaveAllSettings(PINFO pInfo)
Definition: settings.c:16
BOOL SaveRdpSettingsToFile(LPWSTR lpFile, PRDPSETTINGS pRdpSettings)
Definition: settings.c:371
#define IDS_HEADERTEXT1
Definition: resource.h:44
#define IDS_HEADERTEXT2
Definition: resource.h:45
HFONT hFont
Definition: main.c:53
static BOOL OnMainCreate(HWND hwnd, PRDPSETTINGS pRdpSettings)
static const WCHAR Message[]
Definition: register.c:74
static const WCHAR Cleanup[]
Definition: register.c:80
#define RGB(r, g, b)
Definition: precomp.h:71
void OnTabWndSelChange(void)
Definition: dialog.c:91
HDC hdc
Definition: main.c:9
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
Definition: defwnd.c:16
#define L(x)
Definition: ntvdm.h:50
#define TCN_SELCHANGE
Definition: commctrl.h:4137
#define WM_NOTIFY
Definition: richedit.h:61
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
LONG lfHeight
Definition: dimm.idl:59
LONG lfWeight
Definition: dimm.idl:63
WCHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:72
BYTE lfCharSet
Definition: dimm.idl:67
BYTE lfQuality
Definition: dimm.idl:70
BITMAP headerbitmap
Definition: precomp.h:93
PRDPSETTINGS pRdpSettings
Definition: precomp.h:85
HWND hSelf
Definition: precomp.h:88
UINT_PTR idFrom
Definition: winuser.h:3161
UINT code
Definition: winuser.h:3162
#define DEFAULT_QUALITY
Definition: wingdi.h:436
BOOL WINAPI DPtoLP(_In_ HDC hdc, _Inout_updates_(c) LPPOINT lppt, _In_ int c)
#define FW_EXTRABOLD
Definition: wingdi.h:379
#define TRANSPARENT
Definition: wingdi.h:950
#define OEM_CHARSET
Definition: wingdi.h:400
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:918
#define FW_MEDIUM
Definition: wingdi.h:375
#define WM_PAINT
Definition: winuser.h:1623
#define DT_CENTER
Definition: winuser.h:527
#define IDCANCEL
Definition: winuser.h:834
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DT_SINGLELINE
Definition: winuser.h:540
#define WM_COMMAND
Definition: winuser.h:1743
#define DT_NOCLIP
Definition: winuser.h:536
#define IDOK
Definition: winuser.h:833
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define DT_TOP
Definition: winuser.h:542
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
struct tagNMHDR * LPNMHDR
#define DT_BOTTOM
Definition: winuser.h:525
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)

◆ DoOpenFile()

static VOID DoOpenFile ( PINFO  pInfo)
static

Definition at line 34 of file connectdialog.c.

35{
37 WCHAR szFileName[MAX_PATH] = L"Default.rdp";
38 static WCHAR szFilter[] = L"Remote Desktop Files (*.RDP)\0*.rdp\0";
39
40 ZeroMemory(&ofn, sizeof(ofn));
42 ofn.hwndOwner = pInfo->hGeneralPage;
45 ofn.lpstrDefExt = L"RDP";
47 ofn.lpstrFile = szFileName;
49
51 {
52 LoadRdpSettingsFromFile(pInfo->pRdpSettings, szFileName);
53 ReLoadGeneralPage(pInfo);
54 ReLoadDisplayPage(pInfo);
55 }
56}
BOOL LoadRdpSettingsFromFile(PRDPSETTINGS pRdpSettings, LPWSTR lpFile)
Definition: settings.c:419
#define OFN_EXPLORER
Definition: commdlg.h:104
#define OFN_PATHMUSTEXIST
Definition: commdlg.h:117
struct tagOFNW OPENFILENAMEW
static VOID ReLoadGeneralPage(PINFO pInfo)
BOOL WINAPI GetOpenFileNameW(OPENFILENAMEW *ofn)
Definition: filedlg.c:4736
#define MAX_PATH
Definition: compat.h:34
LPTSTR szFilter
Definition: mplay32.c:30
OPENFILENAME ofn
Definition: sndrec32.cpp:56
HWND hGeneralPage
Definition: precomp.h:90
LPCSTR lpstrDefExt
Definition: commdlg.h:345
HWND hwndOwner
Definition: commdlg.h:330
LPSTR lpstrFile
Definition: commdlg.h:336
DWORD nMaxFileTitle
Definition: commdlg.h:339
DWORD Flags
Definition: commdlg.h:342
DWORD lStructSize
Definition: commdlg.h:329
LPCSTR lpstrFilter
Definition: commdlg.h:332
DWORD nMaxFile
Definition: commdlg.h:337

Referenced by DoFileOpen(), GeneralDlgProc(), HandleCommandLine(), MainWndCommand(), and NOTEPAD_WndProc().

◆ DoSaveAs()

static VOID DoSaveAs ( PINFO  pInfo)
static

Definition at line 60 of file connectdialog.c.

61{
63 WCHAR szFileName[MAX_PATH] = L"Default.rdp";
64 static WCHAR szFilter[] = L"Remote Desktop Files (*.RDP)\0*.rdp\0";
65
66 ZeroMemory(&ofn, sizeof(ofn));
68 ofn.hwndOwner = pInfo->hGeneralPage;
71 ofn.lpstrDefExt = L"RDP";
73 ofn.lpstrFile = szFileName;
75
77 {
78 SaveAllSettings(pInfo);
79 SaveRdpSettingsToFile(szFileName, pInfo->pRdpSettings);
80 }
81}
#define OFN_OVERWRITEPROMPT
Definition: commdlg.h:116
BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn)
Definition: filedlg.c:4801

Referenced by GeneralDlgProc().

◆ FillResolutionsAndColors()

static VOID FillResolutionsAndColors ( PINFO  pInfo)
static

Definition at line 667 of file connectdialog.c.

668{
669 PSETTINGS_ENTRY Current;
670 DWORD index, i, num;
671 DWORD MaxBpp = 0;
672 UINT types[5];
673
674 pInfo->CurrentDisplayDevice = pInfo->DisplayDeviceList; /* Update global variable */
675
676 /* find max bpp */
680 0,
681 0);
682 for (Current = pInfo->DisplayDeviceList->Settings; Current != NULL; Current = Current->Flink)
683 {
684 if (Current->dmBitsPerPel > MaxBpp)
685 MaxBpp = Current->dmBitsPerPel;
686 }
687 switch (MaxBpp)
688 {
689 case 32: num = 4; break;
690 case 24: num = 3; break;
691 case 16: num = 2; break;
692 case 15: num = 1; break;
693 case 8: num = 0; break;
694 default: num = 0; break;
695 }
696
697 types[0] = IDS_256COLORS;
702
703 /* Fill color depths combo box */
707 0,
708 0);
709
710 for (i = 0, Current = pInfo->DisplayDeviceList->Settings;
711 i <= num && Current != NULL;
712 i++, Current = Current->Flink)
713 {
714 WCHAR Buffer[64];
715 if (LoadStringW(hInst,
716 types[i],
717 Buffer,
718 sizeof(Buffer) / sizeof(WCHAR)))
719 {
723 (WPARAM)-1,
724 (LPARAM)Buffer);
725 if (index == (DWORD)CB_ERR)
726 {
730 0,
731 (LPARAM)Buffer);
735 index,
736 types[i]);
737 }
738 }
739 }
740
741 /* Fill resolutions slider */
745 TRUE,
746 0);
750 TRUE,
751 MAKELONG(0, pInfo->DisplayDeviceList->ResolutionsCount)); //extra 1 for full screen
752
753
754}
#define IDC_BPPCOMBO
Definition: resource.h:20
#define IDS_HIGHCOLOR15
Definition: resource.h:6
#define IDS_HIGHCOLOR16
Definition: resource.h:7
#define IDS_256COLORS
Definition: resource.h:5
#define IDS_HIGHCOLOR32
Definition: resource.h:9
#define IDS_HIGHCOLOR24
Definition: resource.h:8
#define index(s, c)
Definition: various.h:29
Definition: bufpool.h:45
GLuint index
Definition: glext.h:6031
GLuint GLuint num
Definition: glext.h:9618
unsigned int UINT
Definition: ndis.h:50
#define TBM_CLEARTICS
Definition: commctrl.h:2045
#define TBM_SETRANGE
Definition: commctrl.h:2042
PDISPLAY_DEVICE_ENTRY CurrentDisplayDevice
Definition: precomp.h:87
Definition: cmds.c:130
#define MAKELONG(a, b)
Definition: typedefs.h:249
LONG_PTR LPARAM
Definition: windef.h:208
#define CB_SETITEMDATA
Definition: winuser.h:1969
#define CB_ERR
Definition: winuser.h:2438
#define CB_RESETCONTENT
Definition: winuser.h:1962
#define CB_FINDSTRINGEXACT
Definition: winuser.h:1943
#define CB_ADDSTRING
Definition: winuser.h:1939

Referenced by DisplayOnInit().

◆ FillServerAddressCombo()

static VOID FillServerAddressCombo ( PINFO  pInfo)
static

Definition at line 159 of file connectdialog.c.

160{
161 HKEY hKey;
162 WCHAR KeyName[] = L"Software\\Microsoft\\Terminal Server Client\\Default";
165 DWORD size;
166 INT i = 0;
167 BOOL found = FALSE;
168
170 KeyName,
171 0,
172 KEY_READ,
173 &hKey) == ERROR_SUCCESS)
174 {
175 while (ret == ERROR_SUCCESS)
176 {
179 i,
180 Name,
181 &size,
182 NULL,
183 NULL,
184 NULL,
185 NULL);
186 if (ret == ERROR_SUCCESS)
187 {
188 size = sizeof(Name);
190 Name,
191 0,
192 NULL,
193 NULL,
194 &size) == ERROR_SUCCESS)
195 {
196 LPWSTR lpAddress = HeapAlloc(GetProcessHeap(),
197 0,
198 size);
199 if (lpAddress)
200 {
202 Name,
203 0,
204 NULL,
205 (LPBYTE)lpAddress,
206 &size) == ERROR_SUCCESS)
207 {
211 0,
212 (LPARAM)lpAddress);
213 found = TRUE;
214 }
215
217 0,
218 lpAddress);
219 }
220 }
221 }
222
223 i++;
224 }
226 }
227
228 if (LoadStringW(hInst,
230 Name,
231 sizeof(Name) / sizeof(WCHAR)))
232 {
236 0,
237 (LPARAM)Name);
238 }
239
240 if(found)
241 {
245 0,
246 0);
248 }
249
250}
struct NameRec_ * Name
Definition: cdprocs.h:460
#define IDS_BROWSESERVER
Definition: resource.h:43
#define IDC_SERVERCOMBO
Definition: resource.h:15
#define RegCloseKey(hKey)
Definition: registry.h:49
#define MAX_KEY_NAME
Definition: connectdialog.c:26
static VOID LoadUsernameHint(HWND hDlg, INT iCur)
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
FxAutoRegKey hKey
GLsizeiptr size
Definition: glext.h:5919
#define KEY_READ
Definition: nt_native.h:1023
long LONG
Definition: pedump.c:60
unsigned char * LPBYTE
Definition: typedefs.h:53
int ret
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2699
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define CB_SETCURSEL
Definition: winuser.h:1964

Referenced by GeneralOnInit().

◆ GeneralDlgProc()

INT_PTR CALLBACK GeneralDlgProc ( HWND  hDlg,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 334 of file connectdialog.c.

338{
339 PINFO pInfo = (PINFO)GetWindowLongPtrW(hDlg,
341
342 switch (message)
343 {
344 case WM_INITDIALOG:
345 GeneralOnInit(hDlg, (PINFO)lParam);
346 return TRUE;
347
348 case WM_COMMAND:
349 {
350 switch(LOWORD(wParam))
351 {
352 case IDC_SERVERCOMBO:
354 {
355 INT last, cur;
356
360 0,
361 0);
362
366 0,
367 0);
368 if ((cur + 1) == last)
369 MessageBoxW(hDlg, L"SMB is not yet supported", L"RDP error", MB_ICONERROR);
370 else
371 {
372 LoadUsernameHint(hDlg, cur);
373 }
374 }
375 break;
376
377 case IDC_SAVE:
378 SaveAllSettings(pInfo);
380 break;
381
382 case IDC_SAVEAS:
383 DoSaveAs(pInfo);
384 break;
385
386 case IDC_OPEN:
387 DoOpenFile(pInfo);
388 break;
389 }
390
391 break;
392 }
393
394 case WM_CLOSE:
395 {
396 if (pInfo->hLogon)
397 DestroyIcon(pInfo->hLogon);
398
399 if (pInfo->hConn)
400 DestroyIcon(pInfo->hConn);
401
402 break;
403 }
404 }
405
406 return 0;
407}
#define IDC_SAVE
Definition: resource.h:16
#define IDC_SAVEAS
Definition: resource.h:17
#define IDC_OPEN
Definition: resource.h:18
static VOID GeneralOnInit(HWND hwnd, PINFO pInfo)
static VOID DoSaveAs(PINFO pInfo)
Definition: connectdialog.c:60
static VOID DoOpenFile(PINFO pInfo)
Definition: connectdialog.c:34
FxCollectionEntry * cur
static UINT UINT last
Definition: font.c:45
#define CB_GETCOUNT
Definition: winuser.h:1945
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define CBN_SELCHANGE
Definition: winuser.h:1982
#define MB_ICONERROR
Definition: winuser.h:790
#define CB_GETCURSEL
Definition: winuser.h:1946

Referenced by OnMainCreate().

◆ GeneralOnInit()

static VOID GeneralOnInit ( HWND  hwnd,
PINFO  pInfo 
)
static

Definition at line 281 of file connectdialog.c.

283{
286 (LONG_PTR)pInfo);
287
288 pInfo->hGeneralPage = hwnd;
289
291 NULL,
292 2,
293 22,
294 0,
295 0,
297
298 pInfo->hLogon = LoadImageW(hInst,
301 32,
302 32,
304 if (pInfo->hLogon)
305 {
309 (WPARAM)pInfo->hLogon,
310 0);
311 }
312
313 pInfo->hConn = LoadImageW(hInst,
316 32,
317 32,
319 if (pInfo->hConn)
320 {
324 (WPARAM)pInfo->hConn,
325 0);
326 }
327
329 ReLoadGeneralPage(pInfo);
330}
#define IDI_LOGON
Definition: resource.h:34
#define IDC_CONNICON
Definition: resource.h:25
#define IDC_LOGONICON
Definition: resource.h:24
#define IDI_CONN
Definition: resource.h:35
static VOID FillServerAddressCombo(PINFO pInfo)

Referenced by GeneralDlgProc().

◆ GetPossibleSettings()

static PSETTINGS_ENTRY GetPossibleSettings ( IN LPCWSTR  lpDeviceName,
OUT DWORD pSettingsCount,
OUT PSETTINGS_ENTRY CurrentSettings 
)
static

Definition at line 411 of file connectdialog.c.

414{
416 DWORD NbSettings = 0;
417 DWORD iMode = 0;
418 DWORD dwFlags = 0;
420 HDC hDC;
421 PSETTINGS_ENTRY Current;
422 DWORD bpp, xres, yres, checkbpp;
423
424 /* Get current settings */
425 *CurrentSettings = NULL;
426 hDC = CreateICW(NULL, lpDeviceName, NULL, NULL);
429 xres = GetDeviceCaps(hDC, HORZRES);
430 yres = GetDeviceCaps(hDC, VERTRES);
431 DeleteDC(hDC);
432
433 /* List all settings */
434 devmode.dmSize = (WORD)sizeof(DEVMODE);
436
438 return NULL;
439
440 while (EnumDisplaySettingsExW(lpDeviceName, iMode, &devmode, dwFlags))
441 {
442 if (devmode.dmBitsPerPel==8 ||
443 devmode.dmBitsPerPel==16 ||
444 devmode.dmBitsPerPel==24 ||
446 {
447 checkbpp=1;
448 }
449 else
450 checkbpp=0;
451
452 if (devmode.dmPelsWidth < 640 ||
453 devmode.dmPelsHeight < 480 || checkbpp == 0)
454 {
455 iMode++;
456 continue;
457 }
458
459 Current = HeapAlloc(GetProcessHeap(), 0, sizeof(SETTINGS_ENTRY));
460 if (Current != NULL)
461 {
462 /* Sort resolutions by increasing height, and BPP */
463 PSETTINGS_ENTRY Previous = NULL;
468 while (Next != NULL &&
469 (Next->dmPelsWidth < Current->dmPelsWidth ||
470 (Next->dmPelsWidth == Current->dmPelsWidth && Next->dmPelsHeight < Current->dmPelsHeight) ||
471 (Next->dmPelsHeight == Current->dmPelsHeight &&
472 Next->dmPelsWidth == Current->dmPelsWidth &&
473 Next->dmBitsPerPel < Current->dmBitsPerPel )))
474 {
475 Previous = Next;
476 Next = Next->Flink;
477 }
478 Current->Blink = Previous;
479 Current->Flink = Next;
480 if (Previous == NULL)
481 Settings = Current;
482 else
483 Previous->Flink = Current;
484 if (Next != NULL)
485 Next->Blink = Current;
486 if (devmode.dmPelsWidth == xres && devmode.dmPelsHeight == yres && devmode.dmBitsPerPel == bpp)
487 {
488 *CurrentSettings = Current;
489 }
490 NbSettings++;
491 }
492 iMode++;
493 }
494
495 *pSettingsCount = NbSettings;
496 return Settings;
497}
static HDC hDC
Definition: 3dtext.c:33
DEVMODEW devmode
DWORD bpp
Definition: surface.c:185
unsigned short WORD
Definition: ntddk_ex.h:93
struct _SETTINGS_ENTRY * Blink
Definition: precomp.h:60
DWORD dmBitsPerPel
Definition: wingdi.h:1647
DWORD dmPelsWidth
Definition: wingdi.h:1648
WORD dmDriverExtra
Definition: wingdi.h:1621
DWORD dmPelsHeight
Definition: wingdi.h:1649
WORD dmSize
Definition: wingdi.h:1620
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
Definition: wdfdevice.h:2595
BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode, DWORD dwFlags)
Definition: display.c:330
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
_In_ ULONG iMode
Definition: winddi.h:3520
#define HORZRES
Definition: wingdi.h:716
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HDC WINAPI CreateICW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ const DEVMODEW *)
#define VERTRES
Definition: wingdi.h:717
#define PLANES
Definition: wingdi.h:721
#define BITSPIXEL
Definition: wingdi.h:720
#define ENUM_CURRENT_SETTINGS
Definition: winuser.h:179

Referenced by AddDisplayDevice().

◆ LoadUsernameHint()

static VOID LoadUsernameHint ( HWND  hDlg,
INT  iCur 
)
static

Definition at line 104 of file connectdialog.c.

105{
106 WCHAR szValue[MAXVALUE+1000];
108 WCHAR szKeyName[] = L"Software\\Microsoft\\Terminal Server Client\\Servers";
109 PWCHAR lpAddress;
110 HKEY hKey;
111 HKEY hSubKey;
112 LONG lRet = ERROR_SUCCESS;
113 INT iIndex = 0;
115
117
118 /* remove possible port number */
119 lpAddress = wcstok(szValue, L":");
120
121 if (lpAddress == NULL)
122 return;
123
125 szKeyName,
126 0,
127 KEY_READ,
128 &hKey) == ERROR_SUCCESS)
129 {
130 while (lRet == ERROR_SUCCESS)
131 {
133
134 lRet = RegEnumKeyExW(hKey, iIndex, szName, &dwSize, NULL, NULL, NULL, NULL);
135
136 if(lRet == ERROR_SUCCESS && wcscmp(szName, lpAddress) == 0)
137 {
138 if(RegOpenKeyExW(hKey, szName, 0, KEY_READ, &hSubKey) != ERROR_SUCCESS)
139 break;
140
141 dwSize = MAXVALUE * sizeof(WCHAR);
142
143 if(RegQueryValueExW(hKey, L"UsernameHint", 0, NULL, (LPBYTE)szValue, &dwSize) == ERROR_SUCCESS)
144 {
145 SetDlgItemTextW(hDlg, IDC_NAMEEDIT, szValue);
146 }
147
148 RegCloseKey(hSubKey);
149 break;
150 }
151 iIndex++;
152 }
154 }
155}
#define MAXVALUE
Definition: precomp.h:29
#define IDC_NAMEEDIT
Definition: resource.h:22
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static const WCHAR szName[]
Definition: powrprof.c:45
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRT_RESTORE_GCC_WARNINGS _Check_return_ _CRTIMP wchar_t *__cdecl wcstok(_Inout_opt_z_ wchar_t *_Str, _In_z_ const wchar_t *_Delim)
uint16_t * PWCHAR
Definition: typedefs.h:56
#define CB_GETLBTEXT
Definition: winuser.h:1955
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)

Referenced by FillServerAddressCombo(), and GeneralDlgProc().

◆ OnMainCreate()

static BOOL OnMainCreate ( HWND  hwnd,
PRDPSETTINGS  pRdpSettings 
)
static

Definition at line 1019 of file connectdialog.c.

1021{
1022 PINFO pInfo;
1023 TCITEMW item;
1024 BOOL bRet = FALSE;
1025
1026 pInfo = HeapAlloc(GetProcessHeap(),
1028 sizeof(INFO));
1029 if (pInfo)
1030 {
1033 (LONG_PTR)pInfo);
1034
1035 pInfo->hSelf = hwnd;
1036
1037 /* add main settings pointer */
1038 pInfo->pRdpSettings = pRdpSettings;
1039
1040 /* set the dialog icons */
1041 pInfo->hMstscSm = LoadImageW(hInst,
1043 IMAGE_ICON,
1044 16,
1045 16,
1047 if (pInfo->hMstscSm)
1048 {
1050 WM_SETICON,
1051 ICON_SMALL,
1052 (WPARAM)pInfo->hMstscSm);
1053 }
1054 pInfo->hMstscLg = LoadImageW(hInst,
1056 IMAGE_ICON,
1057 32,
1058 32,
1060 if (pInfo->hMstscLg)
1061 {
1063 WM_SETICON,
1064 ICON_BIG,
1065 (WPARAM)pInfo->hMstscLg);
1066 }
1067
1068 pInfo->hHeader = (HBITMAP)LoadImageW(hInst,
1071 0,
1072 0,
1074 if (pInfo->hHeader)
1075 {
1076 GetObjectW(pInfo->hHeader,
1077 sizeof(BITMAP),
1078 &pInfo->headerbitmap);
1079 }
1080
1081 /* setup the tabs */
1082 pInfo->hTab = GetDlgItem(hwnd, IDC_TAB);
1083 if (pInfo->hTab)
1084 {
1087 pInfo->hTab,
1089 (LPARAM)pInfo))
1090 {
1091 WCHAR str[256];
1092 ZeroMemory(&item, sizeof(TCITEM));
1093 item.mask = TCIF_TEXT;
1095 item.pszText = str;
1096 item.cchTextMax = 256;
1097 (void)TabCtrl_InsertItem(pInfo->hTab, 0, &item);
1098 }
1099
1102 pInfo->hTab,
1104 (LPARAM)pInfo))
1105 {
1106 WCHAR str[256];
1107 ZeroMemory(&item, sizeof(TCITEM));
1108 item.mask = TCIF_TEXT;
1110 item.pszText = str;
1111 item.cchTextMax = 256;
1112 (void)TabCtrl_InsertItem(pInfo->hTab, 1, &item);
1113 }
1114
1115 OnTabWndSelChange(pInfo);
1116 }
1117 }
1118
1119 return bRet;
1120}
#define IDS_TAB_GENERAL
Definition: resource.h:77
#define IDI_MSTSC
Definition: resource.h:33
#define IDB_HEADER
Definition: resource.h:30
#define IDD_GENERAL
Definition: resource.h:12
#define IDD_DISPLAY
Definition: resource.h:13
#define IDS_TAB_DISPLAY
Definition: resource.h:39
INT_PTR CALLBACK GeneralDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK DisplayDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
static ATOM item
Definition: dde.c:856
#define TCITEM
Definition: commctrl.h:4034
#define TabCtrl_InsertItem(hwnd, iItem, pitem)
Definition: commctrl.h:4056
#define TCIF_TEXT
Definition: commctrl.h:3976
const WCHAR * str
HWND hTab
Definition: precomp.h:89
#define ICON_BIG
Definition: tnclass.cpp:51
#define ICON_SMALL
Definition: tnclass.cpp:48
HWND WINAPI CreateDialogParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by DlgProc().

◆ OnResolutionChanged()

static VOID OnResolutionChanged ( PINFO  pInfo,
INT  position 
)
static

Definition at line 623 of file connectdialog.c.

624{
625 WCHAR Buffer[64];
626 INT MaxSlider;
627
628 MaxSlider = SendDlgItemMessageW(pInfo->hDisplayPage,
631 0,
632 0);
633
634 if (position == MaxSlider)
635 {
638 Buffer,
639 sizeof(Buffer) / sizeof(WCHAR));
640 }
641 else
642 {
643 WCHAR Pixel[64];
644
645 if (LoadStringW(hInst,
646 IDS_PIXEL,
647 Pixel,
648 sizeof(Pixel) / sizeof(WCHAR)))
649 {
651 Pixel,
652 pInfo->DisplayDeviceList->Resolutions[position].dmPelsWidth,
654 Pixel);
655 }
656 }
657
661 0,
662 (LPARAM)Buffer);
663}
#define IDS_PIXEL
Definition: resource.h:41
#define IDC_SETTINGS_RESOLUTION_TEXT
Definition: resource.h:21
#define IDS_FULLSCREEN
Definition: resource.h:42
#define swprintf
Definition: precomp.h:40
#define TBM_GETRANGEMAX
Definition: commctrl.h:2038
#define WM_SETTEXT
Definition: winuser.h:1620

Referenced by DisplayDlgProc(), and ReLoadDisplayPage().

◆ OnTabWndSelChange()

static VOID OnTabWndSelChange ( PINFO  pInfo)
static

Definition at line 85 of file connectdialog.c.

86{
87 switch (TabCtrl_GetCurSel(pInfo->hTab))
88 {
89 case 0: //General
93 break;
94 case 1: //Display
98 break;
99 }
100}
#define TabCtrl_GetCurSel(hwnd)
Definition: commctrl.h:4068
#define SW_HIDE
Definition: winuser.h:771
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_SHOW
Definition: winuser.h:778
BOOL WINAPI BringWindowToTop(_In_ HWND)

◆ OpenRDPConnectDialog()

BOOL OpenRDPConnectDialog ( HINSTANCE  hInstance,
PRDPSETTINGS  pRdpSettings 
)

Definition at line 1335 of file connectdialog.c.

1337{
1339
1340 hInst = hInstance;
1341
1342 iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
1343 iccx.dwICC = ICC_TAB_CLASSES;
1344 InitCommonControlsEx(&iccx);
1345
1346 return (DialogBoxParamW(hInst,
1348 NULL,
1349 DlgProc,
1350 (LPARAM)pRdpSettings) == IDOK);
1351}
#define IDD_CONNECTDIALOG
Definition: resource.h:11
HINSTANCE hInstance
Definition: charmap.c:19
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:900
DLGPROC DlgProc
Definition: desk.c:122
struct tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX
#define ICC_TAB_CLASSES
Definition: commctrl.h:61
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)

Referenced by wWinMain().

◆ ReLoadDisplayPage()

static VOID ReLoadDisplayPage ( PINFO  pInfo)
static

Definition at line 758 of file connectdialog.c.

759{
760 DWORD index;
761 INT width, height, pos = 0;
762 INT bpp, num, i, screenmode;
763 BOOL bSet = FALSE;
764
765 /* get fullscreen info */
766 screenmode = GetIntegerFromSettings(pInfo->pRdpSettings, L"screen mode id");
767
768 /* set trackbar position */
769 width = GetIntegerFromSettings(pInfo->pRdpSettings, L"desktopwidth");
770 height = GetIntegerFromSettings(pInfo->pRdpSettings, L"desktopheight");
771
772 if (width != -1 && height != -1)
773 {
774 if(screenmode == 2)
775 {
779 0,
780 0);
781 }
782 else
783 {
785 {
788 {
789 pos = index;
790 break;
791 }
792 }
793 }
794 }
795
796 /* set slider position */
800 TRUE,
801 pos);
802
803 OnResolutionChanged(pInfo, pos);
804
805
806 /* set color combo */
807 bpp = GetIntegerFromSettings(pInfo->pRdpSettings, L"session bpp");
808
812 0,
813 0);
814 for (i = 0; i < num; i++)
815 {
819 i,
820 0);
821 if (data == bpp)
822 {
826 i,
827 0);
828 bSet = TRUE;
829 break;
830 }
831 }
832
833 if (!bSet)
834 {
838 num - 1,
839 0);
840 }
841}
INT GetIntegerFromSettings(PRDPSETTINGS pSettings, LPWSTR lpValue)
Definition: settings.c:144
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
#define TBM_SETPOS
Definition: commctrl.h:2041
#define CB_GETITEMDATA
Definition: winuser.h:1953

Referenced by DisplayOnInit(), and DoOpenFile().

◆ ReLoadGeneralPage()

static VOID ReLoadGeneralPage ( PINFO  pInfo)
static

Definition at line 254 of file connectdialog.c.

255{
256 LPWSTR lpText;
257
258 /* add file address */
259 lpText = GetStringFromSettings(pInfo->pRdpSettings,
260 L"full address");
261 if (lpText)
262 {
265 lpText);
266 }
267
268 /* set user name */
269 lpText = GetStringFromSettings(pInfo->pRdpSettings,
270 L"username");
271 if (lpText)
272 {
275 lpText);
276 }
277}
LPWSTR GetStringFromSettings(PRDPSETTINGS pSettings, LPWSTR lpValue)
Definition: settings.c:171

Referenced by DoOpenFile(), and GeneralOnInit().

Variable Documentation

◆ hInst