[MSPORTS] Implement serial port settings
authorEric Kohl <eric.kohl@reactos.org>
Tue, 25 Sep 2018 12:27:10 +0000 (14:27 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Tue, 25 Sep 2018 12:28:29 +0000 (14:28 +0200)
- Fix the control styles and grouping in the dialogs.
- Implement reading, modifying and writing of the serial port settings.

19 files changed:
dll/win32/msports/classinst.c
dll/win32/msports/lang/bg-BG.rc
dll/win32/msports/lang/de-DE.rc
dll/win32/msports/lang/en-US.rc
dll/win32/msports/lang/es-ES.rc
dll/win32/msports/lang/he-IL.rc
dll/win32/msports/lang/it-IT.rc
dll/win32/msports/lang/ja-JP.rc
dll/win32/msports/lang/pl-PL.rc
dll/win32/msports/lang/ro-RO.rc
dll/win32/msports/lang/ru-RU.rc
dll/win32/msports/lang/sq-AL.rc
dll/win32/msports/lang/tr-TR.rc
dll/win32/msports/lang/uk-UA.rc
dll/win32/msports/lang/zh-CN.rc
dll/win32/msports/lang/zh-TW.rc
dll/win32/msports/precomp.h
dll/win32/msports/resource.h
dll/win32/msports/serial.c

index a1df8ed..3a261d8 100644 (file)
@@ -603,7 +603,7 @@ InstallDeviceData(IN HDEVINFO DeviceInfoSet,
 
     TRACE("Done\n");
 
-done:;
+done:
     if (hKey != NULL)
         RegCloseKey(hKey);
 
@@ -660,7 +660,7 @@ GetPortType(IN HDEVINFO DeviceInfoSet,
             PortType = SerialPort;
     }
 
-done:;
+done:
     if (hKey != NULL)
         RegCloseKey(hKey);
 
index 25f6ca9..de8fa74 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "Настройки на излаза (порта)"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "&Разряда в секунда:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Байта &данни:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Четност:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Спиращи разряди:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Управление на &потока:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "Раз&ширени...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&Връщане на под&разбираните", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Байта &данни:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Четност:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Спиращи разряди:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Управление на &потока:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "Раз&ширени...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&Връщане на под&разбираните", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Настройки на излаза (порта)"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Never use an interrupt", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Enable legacy Plug and Play detection", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Enable legacy Plug and Play detection", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT Port Number:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index fe28cbf..b968518 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "Porteinstellungen"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "B&its pro Sekunde:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Datenbits:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Parität:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Stoppbits:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Flusssteuerung:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Erweitert...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "Wieder&herstellen", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Datenbits:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Parität:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Stoppbits:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Flusssteuerung:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Erweitert...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "Wieder&herstellen", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Porteinstellungen"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Ressourcenmethode", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Interrupt möglichst nicht verwenden", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Ressourcenmethode", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Interrupt möglichst nicht verwenden", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Interrupt nie verwenden", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Jeden dem Port zugeweisenen Interrupt verwenden", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Legacyerkennung für Plug & Play aktivieren", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Jeden dem Port zugeweisenen Interrupt verwenden", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Legacyerkennung für Plug & Play aktivieren", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT-Portnummer:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Gerade,Ungerade,Keine,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,Keine"
 END
index fdc5f0c..baf2725 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "Port Settings"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "B&its per second:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Data bits:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Parity:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Stop bits:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Flow control:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Advanced...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&Restore Defaults", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Data bits:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Parity:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Stop bits:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Flow control:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Advanced...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&Restore Defaults", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Port Settings"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Never use an interrupt", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Enable legacy Plug and Play detection", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Enable legacy Plug and Play detection", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT Port Number:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index 78a3f04..dd6587b 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "Ajustes de puertos"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "B&its por segundo:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Bits de &datos:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Paridad:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Bits de &parada:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Control de &flujo:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Avanzado...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&Por defecto", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Bits de &datos:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Paridad:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Bits de &parada:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Control de &flujo:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Avanzado...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&Por defecto", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Ajustes de puertos"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Método de filtrado de recursos", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Intentar no usar interrupciones", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Método de filtrado de recursos", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Intentar no usar interrupciones", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Nunca usar interrupciones", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Utilizar cualquier interrupción asignada al puerto", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Activar detección PnP para hardware antiguo", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Utilizar cualquier interrupción asignada al puerto", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Activar detección PnP para hardware antiguo", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "Número de puerto LPT:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index fe1d4f9..e6fef32 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "הגדרות יציאה"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "סיביות לשניה:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "סיביות מידע:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Parity:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "סיביות עצירה:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "בקרת זרימה:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "מתקדם...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "שחזר ברירת מחדל", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "סיביות מידע:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Parity:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "סיביות עצירה:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "בקרת זרימה:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "מתקדם...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "שחזר ברירת מחדל", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "הגדרות יציאה"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Never use an interrupt", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Enable legacy Plug and Play detection", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Enable legacy Plug and Play detection", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT Port Number:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index 3a3d90f..eeaad20 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "Impostazioni della Porta"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "B&it per secondo:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Bit di &Dati:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Parità:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Bit di &Stop:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Controllo di &Flusso:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Avanzate...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&Ripristina", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Bit di &Dati:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Parità:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Bit di &Stop:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Controllo di &Flusso:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Avanzate...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&Ripristina", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Impostazioni della Porta"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Metodo di filtraggio delle Risorse", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Prova a non usare un interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Metodo di filtraggio delle Risorse", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Prova a non usare un interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Non usare mai un interrupt", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Usare qualsiasi interrupt assegnato alla porta", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Attiva rilevamento Plug and Play obsoleto", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Usare qualsiasi interrupt assegnato alla porta", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Attiva rilevamento Plug and Play obsoleto", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "Numero di Porta LPT:", -1, 6, 107, 76, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 88, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 88, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index 02113d2..25e5dfc 100644 (file)
@@ -6,17 +6,17 @@ CAPTION "ポート設定"
 FONT 9, "MS UI Gothic"
 BEGIN
     RTEXT "一秒ごとのビット数(&I):", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "データビット(&D):", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "パリティ(&P):", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "ストップビット(&S):", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "フロー制御(&F):", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "上級者向け(&A)...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "既定値を復元(&R)", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "データビット(&D):", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "パリティ(&P):", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "ストップビット(&S):", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "フロー制御(&F):", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "上級者向け(&A)...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "既定値を復元(&R)", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -24,18 +24,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "ポート設定"
 FONT 9, "MS UI Gothic"
 BEGIN
-    GROUPBOX "リソースふるい分け方式", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "一度割り込みを使わないで試す", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "リソースふるい分け方式", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "一度割り込みを使わないで試す", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "割り込みを使わない", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "ポートに割り当てられたすべての割り込みを使う", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "レガシーなプラグアンドプレイ検出を有効にする", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "ポートに割り当てられたすべての割り込みを使う", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "レガシーなプラグアンドプレイ検出を有効にする", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPTポート番号:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index abc86c8..d7af8e7 100644 (file)
@@ -14,17 +14,17 @@ CAPTION "Ustawienia portu"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "B&itów na sekundę:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Bity danych:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Parzystość:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Bi&ty stopu:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Kontrola przepływu:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Zaawansowane...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "P&rzywróć domyślne", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Bity danych:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Parzystość:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Bi&ty stopu:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Kontrola przepływu:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Zaawansowane...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "P&rzywróć domyślne", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -32,18 +32,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Ustawienia portu"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Metoda sposobu filtrowania", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Spróbuj nie używać przerwania", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Metoda sposobu filtrowania", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Spróbuj nie używać przerwania", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Nigdy nie używaj przerwania", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Użyj dowolnego przerwania przypisanego do portu", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Włącz wykrywanie starszego sprzętu Plug and Play", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Użyj dowolnego przerwania przypisanego do portu", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Włącz wykrywanie starszego sprzętu Plug and Play", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "Numer portu LPT:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index 09aa42b..caa284e 100644 (file)
@@ -12,17 +12,17 @@ CAPTION "Configurația portului"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "&Biți pe secundă:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Biți de &date:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Paritate:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Biți de st&op:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Controlul fluxului:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "A&vansate…", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "Valori i&mplicite", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Biți de &date:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Paritate:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Biți de st&op:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Controlul fluxului:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "A&vansate…", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "Valori i&mplicite", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -30,18 +30,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Configurația portului"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Metoda de filtrare a resurselor", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Încearcă evitarea uzului de întreruperi", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Metoda de filtrare a resurselor", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Încearcă evitarea uzului de întreruperi", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Nu folosi întreruperi", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Folosește orice întrerupere asociată portului", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Activează detecția PnP (moștenire)", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Folosește orice întrerupere asociată portului", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Activează detecția PnP (moștenire)", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "Număr port LPT:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index 6fc2d25..e4d593c 100644 (file)
@@ -8,17 +8,17 @@ CAPTION "Параметры порта"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "&Бит в секунду:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "Б&иты данных:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Четность:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "С&топовые биты:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Управление потоком:", -1, 63, 102, 73, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "До&полнительно...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&По умолчанию", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "Б&иты данных:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Четность:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "С&топовые биты:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Управление потоком:", -1, 63, 102, 73, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "До&полнительно...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&По умолчанию", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -26,18 +26,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Параметры порта"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Метод фильтрации ресурсов", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "По возможности не использовать прерывание", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Метод фильтрации ресурсов", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "По возможности не использовать прерывание", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Не использовать прерывание в любом случае", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Использовать любое прерывание, назначенное порту", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Разрешить обнаружение старого Plug and Play порта", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Использовать любое прерывание, назначенное порту", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Разрешить обнаружение старого Plug and Play порта", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "Номер LPT порта:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index e7126c4..73cc86a 100644 (file)
@@ -10,17 +10,17 @@ CAPTION "Cilësimet Portit"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "B&its per sekonda:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Data bits:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Barayi:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Ndalo bits:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Kontrolli i rrjedhjes:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Përparuar...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&Rikthe Parazgjedhjet", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Data bits:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Barayi:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Ndalo bits:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Kontrolli i rrjedhjes:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Përparuar...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&Rikthe Parazgjedhjet", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -28,18 +28,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Cilësimet Portit"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Never use an interrupt", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Enable legacy Plug and Play detection", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Enable legacy Plug and Play detection", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT Port Number:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index de111a3..39bad63 100644 (file)
@@ -8,17 +8,17 @@ CAPTION "Giriş Ayarları"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "&Sâniyedeki Bit Sayısı:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Veri Bitleri:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Eşlik:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Dur Bitleri:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Akış Denetimi:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Gelişmiş...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&Ön Tanımlıları Geri Getir", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Veri Bitleri:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Eşlik:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Dur Bitleri:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Akış Denetimi:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Gelişmiş...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&Ön Tanımlıları Geri Getir", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -26,18 +26,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Giriş Ayarları"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Süzgeç Kaynak Yöntemi", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Bir Kesme Kullanmayı Deneme", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Süzgeç Kaynak Yöntemi", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Bir Kesme Kullanmayı Deneme", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Tüm Zamanlarda Bir Kesme Kullanma", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Giriş İçin Atanmış Bir Kesme Kullan", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Eskiden Kalan Tak ve Çalıştır Algılamasını Etkinleştir", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Giriş İçin Atanmış Bir Kesme Kullan", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Eskiden Kalan Tak ve Çalıştır Algılamasını Etkinleştir", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT Giriş Numarası:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index d2608cc..0f16117 100644 (file)
@@ -14,17 +14,17 @@ CAPTION "Параметри порту"
 FONT 8, "MS Shell Dlg"
 BEGIN
     RTEXT "Бі&тів на секунду:", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Біти даних:", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Паритет:", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Стопові біти:", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "&Керування потоком:", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "&Розширені...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "&За замовчуванням", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Біти даних:", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Паритет:", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Стопові біти:", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "&Керування потоком:", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "&Розширені...", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "&За замовчуванням", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -32,18 +32,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Параметри порту"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "Filter Resource Method", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "Try not to use an interrupt", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "Never use an interrupt", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "Enable legacy Plug and Play detection", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "Use any interrupt assigned to the port", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "Enable legacy Plug and Play detection", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT Port Number:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index beba275..9f17ba4 100644 (file)
@@ -8,17 +8,17 @@ CAPTION "端口设置"
 FONT 9, "宋体"
 BEGIN
     RTEXT "每秒位数:(&I)", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "数据位:(&D)", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "奇偶校验:(&P)", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "停止位:(&S)", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "流量控制:(&F)", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "高级...(&A)", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "还原默认值(&R)", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "数据位:(&D)", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "奇偶校验:(&P)", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "停止位:(&S)", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "流量控制:(&F)", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "高级...(&A)", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "还原默认值(&R)", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -26,18 +26,18 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "端口设置"
 FONT 9, "宋体"
 BEGIN
-    GROUPBOX "筛选资源方法", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "尽量不要使用中断", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "筛选资源方法", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "尽量不要使用中断", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "不要使用中断", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "使用指派给此端口的任何中断", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "启用旧式即插即用检测", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "使用指派给此端口的任何中断", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "启用旧式即插即用检测", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT 端口号:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
index 9880b5a..cfaf247 100644 (file)
@@ -8,17 +8,17 @@ CAPTION "埠設定"
 FONT 9, "新細明體"
 BEGIN
     RTEXT "每秒位數:(&I)", -1, 6, 19, 130, 8, WS_GROUP
-    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "資料位:(&D)", -1, 6, 40, 130, 8
-    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "奇偶校驗:(&P)", -1, 6, 61, 130, 8
-    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "停止位:(&S)", -1, 6, 82, 130, 8
-    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    RTEXT "流量控制:(&F)", -1, 6, 102, 130, 8
-    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, WS_TABSTOP | CBS_DROPDOWNLIST
-    PUSHBUTTON "高階...(&A)", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP
-    PUSHBUTTON "還原預設值(&R)", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP
+    COMBOBOX IDC_SERIAL_BITSPERSECOND, 139, 17, 106, 90, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "資料位:(&D)", -1, 6, 40, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_DATABITS, 139, 38, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "奇偶校驗:(&P)", -1, 6, 61, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_PARITY, 139, 59, 106, 62, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "停止位:(&S)", -1, 6, 82, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_STOPBITS, 139, 80, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    RTEXT "流量控制:(&F)", -1, 6, 102, 130, 8, WS_GROUP
+    COMBOBOX IDC_SERIAL_FLOWCONTROL, 139, 100, 106, 54, CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL
+    PUSHBUTTON "高階...(&A)", IDC_SERIAL_ADVANCED, 71, 130, 85, 14, WS_GROUP | WS_TABSTOP
+    PUSHBUTTON "還原預設值(&R)", IDC_SERIAL_RESTORE, 160, 130, 85, 14, WS_GROUP | WS_TABSTOP
 END
 
 IDD_PARALLELSETTINGS DIALOGEX 0, 0, 252, 218
@@ -26,19 +26,19 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "埠設定"
 FONT 9, "新細明體"
 BEGIN
-    GROUPBOX "篩選資源方法", -1, 6, 6, 237, 75, WS_GROUP
-    AUTORADIOBUTTON "儘量不要使用中斷", IDC_TRY_INTERRUPT, 11, 22, 227, 10
+    GROUPBOX "篩選資源方法", -1, 6, 6, 237, 75
+    AUTORADIOBUTTON "儘量不要使用中斷", IDC_TRY_INTERRUPT, 11, 22, 227, 10, WS_GROUP
     AUTORADIOBUTTON "不要使用中斷", IDC_NEVER_INTERRUPT, 11, 44, 227, 10
-    AUTORADIOBUTTON "使用指派給此埠的任何中斷", IDC_ANY_INTERRUPT, 11, 66, 227, 10, WS_GROUP
-    AUTOCHECKBOX "啟用舊式即插即用檢測", -1, 6, 90, 237, 10
+    AUTORADIOBUTTON "使用指派給此埠的任何中斷", IDC_ANY_INTERRUPT, 11, 66, 227, 10
+    AUTOCHECKBOX "啟用舊式即插即用檢測", IDC_PARALLEL_LEGACY, 6, 90, 237, 10, WS_TABSTOP
     LTEXT "LPT 埠號:", -1, 6, 107, 140, 10, WS_GROUP
-    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, WS_TABSTOP | CBS_DROPDOWNLIST
+    COMBOBOX IDC_PARALLEL_NAME, 65, 105, 75, 20, CBS_DROPDOWNLIST | WS_GROUP | WS_TABSTOP | WS_VSCROLL
 END
 
 STRINGTABLE
 BEGIN
-    IDS_LPT1 "LPT1"
-    IDS_LPT2 "LPT2"
-    IDS_LPT3 "LPT3"
+    IDS_PARITY "Even,Odd,None,Mark,Space"
+    IDS_STOPBITS "1,1.5,2"
+    IDS_FLOWCONTROL "Xon / Xoff,Hardware,None"
 END
 
index 0b25e4d..6b16ba7 100644 (file)
@@ -2,6 +2,8 @@
 #define _MSPORTS_PCH_
 
 #include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
 
 #define WIN32_NO_STATUS
 #define _INC_WINDOWS
@@ -11,6 +13,7 @@
 #include <winbase.h>
 #include <winreg.h>
 #include <winuser.h>
+#include <windowsx.h>
 #include <msports.h>
 #include <setupapi.h>
 
index 772a041..c9d7168 100644 (file)
@@ -8,13 +8,15 @@
 #define IDC_SERIAL_FLOWCONTROL   205
 #define IDC_SERIAL_ADVANCED      206
 #define IDC_SERIAL_RESTORE       207
-#define IDC_PARALLEL_NAME        208
-#define IDC_TRY_INTERRUPT        209
-#define IDC_NEVER_INTERRUPT      210
-#define IDC_ANY_INTERRUPT        211
 
-#define IDS_LPT1                 212
-#define IDS_LPT2                 213
-#define IDS_LPT3                 214
+#define IDD_PARALLELSETTINGS     220
+#define IDC_TRY_INTERRUPT        221
+#define IDC_NEVER_INTERRUPT      222
+#define IDC_ANY_INTERRUPT        223
+#define IDC_PARALLEL_LEGACY      224
+#define IDC_PARALLEL_NAME        225
 
-#define IDD_PARALLELSETTINGS 220
+
+#define IDS_PARITY                11
+#define IDS_STOPBITS              12
+#define IDS_FLOWCONTROL           13
index b4d3d6c..b248072 100644 (file)
 
 #include "precomp.h"
 
+
+typedef struct _PORT_DATA
+{
+    HDEVINFO DeviceInfoSet;
+    PSP_DEVINFO_DATA DeviceInfoData;
+
+    WCHAR szPortName[16];
+    INT nBaudRateIndex;
+    INT nParityIndex;
+    INT nDataBitsIndex;
+    INT nStopBitsIndex;
+    INT nFlowControlIndex;
+
+    BOOL bChanged;
+} PORT_DATA, *PPORT_DATA;
+
+#define DEFAULT_BAUD_RATE_INDEX    11
+#define DEFAULT_DATA_BITS_INDEX     4
+#define DEFAULT_PARITY_INDEX        2
+#define DEFAULT_STOP_BITS_INDEX     0
+#define DEFAULT_FLOW_CONTROL_INDEX  2
+
+DWORD BaudRates[] = {75, 110, 134, 150, 300, 600, 1200, 1800, 2400, 4800,
+                     7200, 9600, 14400, 19200, 38400, 57600, 115200, 128000};
+PWSTR Paritys[] = {L"e", L"o", L"n", L"m", L"s"};
+PWSTR DataBits[] = {L"4", L"5", L"6", L"7", L"8"};
+PWSTR StopBits[] = {L"1", L"1.5", L"2"};
+PWSTR FlowControls[] = {L"x", L"p"};
+
+
+static
+VOID
+FillComboBox(
+    HWND hwnd,
+    PWSTR szBuffer)
+{
+    PWSTR pStart, pEnd;
+
+    pStart = szBuffer;
+    for (;;)
+    {
+        pEnd = wcschr(pStart, L',');
+        if (pEnd != NULL)
+            *pEnd = UNICODE_NULL;
+
+        ComboBox_AddString(hwnd, pStart);
+
+        if (pEnd == NULL)
+            break;
+
+        pStart = pEnd + 1;
+    }
+}
+
+
+static
+VOID
+ReadPortSettings(
+    PPORT_DATA pPortData)
+{
+    WCHAR szPortData[32];
+    WCHAR szParity[4];
+    WCHAR szDataBits[4];
+    WCHAR szStopBits[4];
+    WCHAR szFlowControl[4];
+    DWORD dwType, dwSize;
+    DWORD dwBaudRate = 0;
+    HKEY hKey;
+    INT n, i;
+    LONG lError;
+
+    TRACE("ReadPortSettings(%p)\n", pPortData);
+
+    pPortData->nBaudRateIndex = DEFAULT_BAUD_RATE_INDEX; /* 9600 */
+    pPortData->nParityIndex   = DEFAULT_PARITY_INDEX;    /* None */
+    pPortData->nDataBitsIndex = DEFAULT_DATA_BITS_INDEX; /* 8 Data Bits */
+    pPortData->nStopBitsIndex = DEFAULT_STOP_BITS_INDEX; /* 1 Stop Bit */
+    pPortData->nFlowControlIndex = DEFAULT_FLOW_CONTROL_INDEX; /* None */
+    pPortData->bChanged = FALSE;
+
+    hKey = SetupDiOpenDevRegKey(pPortData->DeviceInfoSet,
+                                pPortData->DeviceInfoData,
+                                DICS_FLAG_GLOBAL,
+                                0,
+                                DIREG_DEV,
+                                KEY_READ);
+    if (hKey == INVALID_HANDLE_VALUE)
+    {
+        ERR("SetupDiOpenDevRegKey() failed\n");
+        return;
+    }
+
+    dwSize = sizeof(pPortData->szPortName);
+    lError = RegQueryValueExW(hKey,
+                              L"PortName",
+                              NULL,
+                              NULL,
+                              (PBYTE)pPortData->szPortName,
+                              &dwSize);
+    RegCloseKey(hKey);
+
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegQueryValueExW failed (Error %lu)\n", lError);
+        return;
+    }
+
+    wcscat(pPortData->szPortName, L":");
+    TRACE("PortName: '%S'\n", pPortData->szPortName);
+
+    lError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+                           L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Ports",
+                           0,
+                           KEY_READ,
+                           &hKey);
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegOpenKeyExW failed (Error %lu)\n", lError);
+        return;
+    }
+
+    dwSize = sizeof(szPortData);
+    lError = RegQueryValueExW(hKey,
+                              pPortData->szPortName,
+                              NULL,
+                              &dwType,
+                              (LPBYTE)szPortData,
+                              &dwSize);
+    RegCloseKey(hKey);
+
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegQueryValueExW failed (Error %lu)\n", lError);
+        return;
+    }
+
+    if ((dwType != REG_SZ) || (dwSize > sizeof(szPortData)))
+    {
+        ERR("Wrong type or size\n");
+        return;
+    }
+
+    TRACE("szPortData: '%S'\n", szPortData);
+
+    /* Replace commas by spaces */
+    for (i = 0; i < wcslen(szPortData); i++)
+    {
+        if (szPortData[i] == L',')
+            szPortData[i] = L' ';
+    }
+
+    TRACE("szPortData: '%S'\n", szPortData);
+
+    /* Parse the port settings */
+    n = swscanf(szPortData,
+                L"%lu %3s %3s %3s %3s",
+                &dwBaudRate,
+                &szParity,
+                &szDataBits,
+                &szStopBits,
+                &szFlowControl);
+
+    TRACE("dwBaudRate: %lu\n", dwBaudRate);
+    TRACE("szParity: '%S'\n", szParity);
+    TRACE("szDataBits: '%S'\n", szDataBits);
+    TRACE("szStopBits: '%S'\n", szStopBits);
+    TRACE("szFlowControl: '%S'\n", szFlowControl);
+
+    if (n > 0)
+    {
+        for (i = 0; i < ARRAYSIZE(BaudRates); i++)
+        {
+            if (dwBaudRate == BaudRates[i])
+                pPortData->nBaudRateIndex = i;
+        }
+    }
+
+    if (n > 1)
+    {
+        for (i = 0; i < ARRAYSIZE(Paritys); i++)
+        {
+            if (_wcsicmp(szParity, Paritys[i]) == 0)
+                pPortData->nParityIndex = i;
+        }
+    }
+
+    if (n > 2)
+    {
+        for (i = 0; i < ARRAYSIZE(DataBits); i++)
+        {
+            if (_wcsicmp(szDataBits, DataBits[i]) == 0)
+                pPortData->nDataBitsIndex = i;
+        }
+    }
+
+    if (n > 3)
+    {
+        for (i = 0; i < ARRAYSIZE(StopBits); i++)
+        {
+            if (_wcsicmp(szStopBits, StopBits[i]) == 0)
+                pPortData->nStopBitsIndex = i;
+        }
+    }
+
+    if (n > 4)
+    {
+        for (i = 0; i < ARRAYSIZE(FlowControls); i++)
+        {
+            if (_wcsicmp(szFlowControl, FlowControls[i]) == 0)
+                pPortData->nFlowControlIndex = i;
+        }
+    }
+}
+
+
+static
+VOID
+WritePortSettings(
+    HWND hwnd,
+    PPORT_DATA pPortData)
+{
+    WCHAR szPortData[32];
+    HWND hwndControl;
+    INT nBaudRateIndex;
+    INT nDataBitsIndex;
+    INT nParityIndex;
+    INT nStopBitsIndex;
+    INT nFlowControlIndex;
+    HKEY hKey;
+    LONG lError;
+
+    TRACE("WritePortSettings(%p)\n", pPortData);
+
+    if (pPortData->bChanged == FALSE)
+    {
+        TRACE("Nothing changed. Done!\n");
+        return;
+    }
+
+    nBaudRateIndex = pPortData->nBaudRateIndex;
+    nDataBitsIndex = pPortData->nDataBitsIndex;
+    nParityIndex = pPortData->nParityIndex;
+    nStopBitsIndex = pPortData->nStopBitsIndex;
+    nFlowControlIndex = pPortData->nFlowControlIndex;
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_BITSPERSECOND);
+    if (hwndControl)
+    {
+        nBaudRateIndex = ComboBox_GetCurSel(hwndControl);
+    }
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_DATABITS);
+    if (hwndControl)
+    {
+        nDataBitsIndex = ComboBox_GetCurSel(hwndControl);
+    }
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_PARITY);
+    if (hwndControl)
+    {
+        nParityIndex = ComboBox_GetCurSel(hwndControl);
+    }
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_STOPBITS);
+    if (hwndControl)
+    {
+        nStopBitsIndex = ComboBox_GetCurSel(hwndControl);
+    }
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_FLOWCONTROL);
+    if (hwndControl)
+    {
+        nFlowControlIndex = ComboBox_GetCurSel(hwndControl);
+    }
+
+    swprintf(szPortData,
+             L"%lu,%s,%s,%s",
+             BaudRates[nBaudRateIndex],
+             Paritys[nParityIndex],
+             DataBits[nDataBitsIndex],
+             StopBits[nStopBitsIndex]);
+    if (nFlowControlIndex < 2)
+    {
+        wcscat(szPortData, L",");
+        wcscat(szPortData, FlowControls[nFlowControlIndex]);
+    }
+
+    TRACE("szPortData: '%S'\n", szPortData);
+
+    lError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+                           L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Ports",
+                           0,
+                           KEY_WRITE,
+                           &hKey);
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegOpenKeyExW failed (Error %lu)\n", lError);
+        return;
+    }
+
+    lError = RegSetValueExW(hKey,
+                            pPortData->szPortName,
+                            0,
+                            REG_SZ,
+                            (LPBYTE)szPortData,
+                            (wcslen(szPortData) + 1) * sizeof(WCHAR));
+
+    RegCloseKey(hKey);
+
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegSetValueExW failed (Error %lu)\n", lError);
+        return;
+    }
+
+    TRACE("Done!\n");
+}
+
+
 static
 BOOL
-OnInitDialog(HWND hwnd,
-             WPARAM wParam,
-             LPARAM lParam)
+OnInitDialog(
+    HWND hwnd,
+    WPARAM wParam,
+    LPARAM lParam)
 {
-    FIXME("Port_OnInit()\n");
+    PPORT_DATA pPortData;
+    WCHAR szBuffer[256];
+    UINT i;
+    HWND hwndControl;
+
+    TRACE("OnInitDialog()\n");
+
+    pPortData = (PPORT_DATA)((LPPROPSHEETPAGEW)lParam)->lParam;
+    if (pPortData == NULL)
+    {
+        ERR("pPortData is NULL\n");
+        return FALSE;
+    }
+
+    SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)pPortData);
+
+    /* Read and parse the port settings */
+    ReadPortSettings(pPortData);
+
+    /* Fill the 'Bits per second' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_BITSPERSECOND);
+    if (hwndControl)
+    {
+        for (i = 0; i < ARRAYSIZE(BaudRates); i++)
+        {
+            _ultow(BaudRates[i], szBuffer, 10);
+            ComboBox_AddString(hwndControl, szBuffer);
+        }
+
+        ComboBox_SetCurSel(hwndControl, pPortData->nBaudRateIndex);
+    }
+
+    /* Fill the 'Data bits' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_DATABITS);
+    if (hwndControl)
+    {
+        for (i = 0; i < ARRAYSIZE(DataBits); i++)
+        {
+            ComboBox_AddString(hwndControl, DataBits[i]);
+        }
+
+        ComboBox_SetCurSel(hwndControl, pPortData->nDataBitsIndex);
+    }
+
+    /* Fill the 'Parity' combobox */
+    LoadStringW(hInstance, IDS_PARITY, szBuffer, ARRAYSIZE(szBuffer));
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_PARITY);
+    if (hwndControl)
+    {
+        FillComboBox(hwndControl, szBuffer);
+        ComboBox_SetCurSel(hwndControl, pPortData->nParityIndex);
+    }
+
+    /* Fill the 'Stop bits' combobox */
+    LoadStringW(hInstance, IDS_STOPBITS, szBuffer, ARRAYSIZE(szBuffer));
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_STOPBITS);
+    if (hwndControl)
+    {
+        FillComboBox(hwndControl, szBuffer);
+        ComboBox_SetCurSel(hwndControl, pPortData->nStopBitsIndex);
+    }
+
+    /* Fill the 'Flow control' combobox */
+    LoadStringW(hInstance, IDS_FLOWCONTROL, szBuffer, ARRAYSIZE(szBuffer));
+
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_FLOWCONTROL);
+    if (hwndControl)
+    {
+        FillComboBox(hwndControl, szBuffer);
+        ComboBox_SetCurSel(hwndControl, pPortData->nFlowControlIndex);
+    }
+
+    /* Disable the 'Advanced' button */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_ADVANCED);
+    if (hwndControl)
+        EnableWindow(hwndControl, FALSE);
+
     return TRUE;
 }
 
 
+static
+VOID
+RestoreDefaultValues(
+    HWND hwnd,
+    PPORT_DATA pPortData)
+{
+    HWND hwndControl;
+
+    /* Reset the 'Bits per second' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_BITSPERSECOND);
+    if (hwndControl)
+    {
+        ComboBox_SetCurSel(hwndControl, DEFAULT_BAUD_RATE_INDEX);
+    }
+
+    /* Reset the 'Data bits' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_DATABITS);
+    if (hwndControl)
+    {
+        ComboBox_SetCurSel(hwndControl, DEFAULT_DATA_BITS_INDEX);
+    }
+
+    /* Reset the 'Parity' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_PARITY);
+    if (hwndControl)
+    {
+        ComboBox_SetCurSel(hwndControl, DEFAULT_PARITY_INDEX);
+    }
+
+    /* Reset the 'Stop bits' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_STOPBITS);
+    if (hwndControl)
+    {
+        ComboBox_SetCurSel(hwndControl, DEFAULT_STOP_BITS_INDEX);
+    }
+
+    /* Reset the 'Flow control' combobox */
+    hwndControl = GetDlgItem(hwnd, IDC_SERIAL_FLOWCONTROL);
+    if (hwndControl)
+    {
+        ComboBox_SetCurSel(hwndControl, DEFAULT_FLOW_CONTROL_INDEX);
+    }
+
+    pPortData->bChanged = TRUE;
+}
+
+
+static
+VOID
+OnCommand(
+    HWND hwnd,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    PPORT_DATA pPortData;
+
+    TRACE("OnCommand()\n");
+
+    pPortData = (PPORT_DATA)GetWindowLongPtr(hwnd, DWLP_USER);
+    if (pPortData == NULL)
+    {
+        ERR("pPortData is NULL\n");
+        return;
+    }
+
+    switch (LOWORD(wParam))
+    {
+        case IDC_SERIAL_BITSPERSECOND:
+        case IDC_SERIAL_DATABITS:
+        case IDC_SERIAL_PARITY:
+        case IDC_SERIAL_STOPBITS:
+        case IDC_SERIAL_FLOWCONTROL:
+            if (HIWORD(wParam) == CBN_SELCHANGE ||
+                HIWORD(wParam) == CBN_EDITCHANGE)
+            {
+                pPortData->bChanged = TRUE;
+            }
+            break;
+
+//        case IDC_SERIAL_ADVANCED:
+
+        case IDC_SERIAL_RESTORE:
+            RestoreDefaultValues(hwnd, pPortData);
+            break;
+
+        default:
+            break;
+    }
+}
+
+
+static
+VOID
+OnNotify(
+    HWND hwnd,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    PPORT_DATA pPortData;
+
+    TRACE("OnCommand()\n");
+
+    pPortData = (PPORT_DATA)GetWindowLongPtr(hwnd, DWLP_USER);
+    if (pPortData == NULL)
+    {
+        ERR("pPortData is NULL\n");
+        return;
+    }
+
+    if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY)
+    {
+        FIXME("PSN_APPLY!\n");
+        WritePortSettings(hwnd, pPortData);
+    }
+}
+
+
+static
+VOID
+OnDestroy(
+    HWND hwnd)
+{
+    PPORT_DATA pPortData;
+
+    TRACE("OnDestroy()\n");
+
+    pPortData = (PPORT_DATA)GetWindowLongPtr(hwnd, DWLP_USER);
+    if (pPortData == NULL)
+    {
+        ERR("pPortData is NULL\n");
+        return;
+    }
+
+    HeapFree(GetProcessHeap(), 0, pPortData);
+    SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)NULL);
+}
+
+
 static
 INT_PTR
 CALLBACK
@@ -27,12 +563,24 @@ SerialSettingsDlgProc(HWND hwnd,
                       WPARAM wParam,
                       LPARAM lParam)
 {
-    FIXME("SerialSettingsDlgProc()\n");
+    TRACE("SerialSettingsDlgProc()\n");
 
     switch (uMsg)
     {
         case WM_INITDIALOG:
             return OnInitDialog(hwnd, wParam, lParam);
+
+        case WM_COMMAND:
+            OnCommand(hwnd, wParam, lParam);
+            break;
+
+        case WM_NOTIFY:
+            OnNotify(hwnd, wParam, lParam);
+            break;
+
+        case WM_DESTROY:
+            OnDestroy(hwnd);
+            break;
     }
 
     return FALSE;
@@ -41,44 +589,58 @@ SerialSettingsDlgProc(HWND hwnd,
 
 BOOL
 WINAPI
-SerialPortPropPageProvider(PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest,
-                           LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc,
-                           LPARAM lParam)
+SerialPortPropPageProvider(
+    PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest,
+    LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc,
+    LPARAM lParam)
 {
     PROPSHEETPAGEW PropSheetPage;
     HPROPSHEETPAGE hPropSheetPage;
+    PPORT_DATA pPortData;
 
-    FIXME("SerialPortPropPageProvider(%p %p %lx)\n",
+    TRACE("SerialPortPropPageProvider(%p %p %lx)\n",
           lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam);
 
+    pPortData = HeapAlloc(GetProcessHeap(),
+                          HEAP_ZERO_MEMORY,
+                          sizeof(PORT_DATA));
+    if (pPortData == NULL)
+    {
+        ERR("Port data allocation failed!\n");
+        return FALSE;
+    }
+
+    pPortData->DeviceInfoSet = lpPropSheetPageRequest->DeviceInfoSet;
+    pPortData->DeviceInfoData = lpPropSheetPageRequest->DeviceInfoData;
+
     if (lpPropSheetPageRequest->PageRequested == SPPSR_ENUM_ADV_DEVICE_PROPERTIES)
     {
-        FIXME("SPPSR_ENUM_ADV_DEVICE_PROPERTIES\n");
+        TRACE("SPPSR_ENUM_ADV_DEVICE_PROPERTIES\n");
 
         PropSheetPage.dwSize = sizeof(PROPSHEETPAGEW);
         PropSheetPage.dwFlags = 0;
         PropSheetPage.hInstance = hInstance;
         PropSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_SERIALSETTINGS);
         PropSheetPage.pfnDlgProc = SerialSettingsDlgProc;
-        PropSheetPage.lParam = 0;
+        PropSheetPage.lParam = (LPARAM)pPortData;
         PropSheetPage.pfnCallback = NULL;
 
         hPropSheetPage = CreatePropertySheetPageW(&PropSheetPage);
         if (hPropSheetPage == NULL)
         {
-            FIXME("CreatePropertySheetPageW() failed!\n");
+            ERR("CreatePropertySheetPageW() failed!\n");
             return FALSE;
         }
 
         if (!(*lpfnAddPropSheetPageProc)(hPropSheetPage, lParam))
         {
-            FIXME("lpfnAddPropSheetPageProc() failed!\n");
+            ERR("lpfnAddPropSheetPageProc() failed!\n");
             DestroyPropertySheetPage(hPropSheetPage);
             return FALSE;
         }
     }
 
-    FIXME("Done!\n");
+    TRACE("Done!\n");
 
     return TRUE;
 }