use unicode functions only and some minor fixes to preserve 64bit compatibility Modified: trunk/reactos/lib/serialui/serialui.c Modified: trunk/reactos/lib/serialui/serialui.h _____
Modified: trunk/reactos/lib/serialui/serialui.c --- trunk/reactos/lib/serialui/serialui.c 2005-04-06 12:32:14 UTC (rev 14526) +++ trunk/reactos/lib/serialui/serialui.c 2005-04-06 17:04:28 UTC (rev 14527) @@ -19,49 +19,35 @@
* ************************************/
-struct -{ - DWORD Baud; - CHAR *Str; -} Bauds[] = -{ - { CBR_110, "110" }, - { CBR_300, "300" }, - { CBR_600, "600" }, - { CBR_1200, "1200" }, - { CBR_2400, "2400" }, - { CBR_4800, "4800" }, - { CBR_9600, "9600" }, - { CBR_14400, "14400" }, - { CBR_19200, "19200" }, - { CBR_38400, "38400" }, - { CBR_56000, "56000" }, - { CBR_57600, "57600" }, - { CBR_115200, "115200" }, - { CBR_128000, "128000" }, - { CBR_256000, "256000" }, - { 0, 0 } +const DWORD Bauds[] = { + CBR_110, + CBR_300, + CBR_600, + CBR_1200, + CBR_2400, + CBR_4800, + CBR_9600, + CBR_14400, + CBR_19200, + CBR_38400, + CBR_56000, + CBR_57600, + CBR_115200, + CBR_128000, + CBR_256000, + 0 };
-struct -{ - BYTE ByteSize; - CHAR *Str; -} ByteSizes[] = -{ - { 5, "5" }, - { 6, "6" }, - { 7, "7" }, - { 8, "8" }, - { 0, 0 } +const BYTE ByteSizes[] = { + 5, + 6, + 7, + 8, + 0 };
-struct -{ - BYTE Parity; - UINT StrId; -} Paritys[] = -{ + +const PARITY_INFO Parities[] = { { EVENPARITY, IDS_EVENPARITY }, { MARKPARITY, IDS_MARKPARITY }, { NOPARITY, IDS_NOPARITY }, @@ -70,12 +56,7 @@ { 0, 0 } };
-struct -{ - BYTE StopBit; - UINT StrId; -} StopBits[] = -{ +const STOPBIT_INFO StopBits[] = { { ONESTOPBIT, IDS_ONESTOPBIT }, { ONE5STOPBITS, IDS_ONE5STOPBITS }, { TWOSTOPBITS, IDS_TWOSTOPBITS }, @@ -218,27 +199,22 @@
case WM_INITDIALOG: { - WCHAR wstr[255], *format; - CHAR str[255]; + WCHAR wstr[255]; RECT rc, rcDlg, rcOwner; HWND hOwner; - INT i, len; + INT i;
lpDlgInfo = (LPDIALOG_INFO)lParam; - SetWindowLong(hDlg, DWL_USER, (LONG)lpDlgInfo); + SetWindowLongPtrW(hDlg, DWL_USER, (LONG_PTR)lpDlgInfo);
/* Set title */ - LoadStringA(hDllInstance, IDS_TITLE, str, 254); - len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - if((format = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR)))) + if(LoadStringW(hDllInstance, IDS_TITLE, wstr, sizeof(wstr) / sizeof(wstr[0]))) { - MultiByteToWideChar(CP_ACP, 0, str, -1, format, len); - wnsprintfW(wstr, 254, format, lpDlgInfo->lpszDevice); - HeapFree(GetProcessHeap(), 0, format); - SetWindowTextW(hDlg, wstr); + SetWindowTextW(hDlg, wstr); }
- if(!(hOwner = GetParent(hDlg))) + /* FIXME - this won't work correctly systems with multiple monitors! */ + if(!(hOwner = GetParent(hDlg))) hOwner = GetDesktopWindow();
/* Position dialog in the center of owner window */ @@ -257,46 +233,48 @@ if(!(hBox = GetDlgItem(hDlg, IDC_BAUDRATE))) EndDialog(hDlg, 0);
- for(i = 0; Bauds[i].Str; i++) + for(i = 0; Bauds[i]; i++) { - SendMessageA(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)Bauds[i].Str); - if(Bauds[i].Baud == lpDlgInfo->lpCC->dcb.BaudRate) - SendMessageA(hBox, CB_SETCURSEL, (WPARAM)i, 0); + wsprintf(wstr, L"%d", Bauds[i]); + SendMessageW(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)wstr); + if(Bauds[i] == lpDlgInfo->lpCC->dcb.BaudRate) + SendMessageW(hBox, CB_SETCURSEL, (WPARAM)i, 0); }
- if(SendMessage(hBox, CB_GETCURSEL, 0, 0)==CB_ERR) - SendMessageA(hBox, CB_SETCURSEL, DEFAULT_BAUD_INDEX, 0); + if(SendMessageW(hBox, CB_GETCURSEL, 0, 0) == CB_ERR) + SendMessageW(hBox, CB_SETCURSEL, DEFAULT_BAUD_INDEX, 0);
/* Initialize byte size combo */ if(!(hBox = GetDlgItem(hDlg, IDC_BYTESIZE))) EndDialog(hDlg, 0);
- for(i = 0; ByteSizes[i].Str; i++) + for(i = 0; ByteSizes[i]; i++) { - SendMessageA(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)ByteSizes[i].Str); - if(ByteSizes[i].ByteSize == lpDlgInfo->lpCC->dcb.ByteSize) - SendMessageA(hBox, CB_SETCURSEL, (WPARAM)i, 0); + wsprintf(wstr, L"%d", Bauds[i]); + SendMessageW(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)wstr); + if(ByteSizes[i] == lpDlgInfo->lpCC->dcb.ByteSize) + SendMessageW(hBox, CB_SETCURSEL, (WPARAM)i, 0); }
- if(SendMessage(hBox, CB_GETCURSEL, 0, 0)==CB_ERR) - SendMessageA(hBox, CB_SETCURSEL, DEFAULT_BYTESIZE_INDEX, 0); + if(SendMessageW(hBox, CB_GETCURSEL, 0, 0) == CB_ERR) + SendMessageW(hBox, CB_SETCURSEL, DEFAULT_BYTESIZE_INDEX, 0);
/* Initialize parity combo */ if(!(hBox = GetDlgItem(hDlg, IDC_PARITY))) EndDialog(hDlg, 0);
- for(i = 0; Paritys[i].StrId; i++) + for(i = 0; Parities[i].StrId; i++) { - if(LoadStringA(hDllInstance, Paritys[i].StrId, str, 254)) + if(LoadStringW(hDllInstance, Parities[i].StrId, wstr, sizeof(wstr) / sizeof(wstr[0]))) { - SendMessageA(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)str); - if(Paritys[i].Parity == lpDlgInfo->lpCC->dcb.Parity) - SendMessageA(hBox, CB_SETCURSEL, (WPARAM)i, 0); + SendMessageW(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)wstr); + if(Parities[i].Parity == lpDlgInfo->lpCC->dcb.Parity) + SendMessageW(hBox, CB_SETCURSEL, (WPARAM)i, 0); } }
- if(SendMessage(hBox, CB_GETCURSEL, 0, 0)==CB_ERR) - SendMessageA(hBox, CB_SETCURSEL, DEFAULT_PARITY_INDEX, 0); + if(SendMessageW(hBox, CB_GETCURSEL, 0, 0)==CB_ERR) + SendMessageW(hBox, CB_SETCURSEL, DEFAULT_PARITY_INDEX, 0);
/* Initialize stop bits combo */ if(!(hBox = GetDlgItem(hDlg, IDC_STOPBITS))) @@ -304,46 +282,46 @@
for(i = 0; StopBits[i].StrId; i++) { - if(LoadStringA(hDllInstance,StopBits[i].StrId, str, 254)) + if(LoadStringW(hDllInstance, StopBits[i].StrId, wstr, sizeof(wstr) / sizeof(wstr[0]))) { - SendMessageA(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)str); + SendMessageW(hBox, CB_INSERTSTRING, (WPARAM)i, (LPARAM)wstr); if(StopBits[i].StopBit == lpDlgInfo->lpCC->dcb.StopBits) - SendMessageA(hBox, CB_SETCURSEL, (WPARAM)i, 0); + SendMessageW(hBox, CB_SETCURSEL, (WPARAM)i, 0); } }
- if(SendMessage(hBox, CB_GETCURSEL, 0, 0)==CB_ERR) - SendMessageA(hBox, CB_SETCURSEL, DEFAULT_STOPBITS_INDEX, 0); + if(SendMessageW(hBox, CB_GETCURSEL, 0, 0)==CB_ERR) + SendMessageW(hBox, CB_SETCURSEL, DEFAULT_STOPBITS_INDEX, 0);
/* Initialize flow control combo */ if(!(hBox = GetDlgItem(hDlg, IDC_FLOW))) EndDialog(hDlg, 0);
- if(LoadStringA(hDllInstance,IDS_FC_NO, str, 254)) + if(LoadStringW(hDllInstance, IDS_FC_NO, wstr, sizeof(wstr) / sizeof(wstr[0]))) { - SendMessageA(hBox, CB_INSERTSTRING, 0, (LPARAM)str); - SendMessageA(hBox, CB_SETCURSEL, 0, 0); + SendMessageW(hBox, CB_INSERTSTRING, 0, (LPARAM)wstr); + SendMessageW(hBox, CB_SETCURSEL, 0, 0); lpDlgInfo->InitialFlowIndex = 0; }
- if(LoadStringA(hDllInstance,IDS_FC_CTSRTS, str, 254)) + if(LoadStringW(hDllInstance, IDS_FC_CTSRTS, wstr, sizeof(wstr) / sizeof(wstr[0]))) { - SendMessageA(hBox, CB_INSERTSTRING, 1, (LPARAM)str); + SendMessageW(hBox, CB_INSERTSTRING, 1, (LPARAM)wstr); if(lpDlgInfo->lpCC->dcb.fRtsControl == RTS_CONTROL_HANDSHAKE || lpDlgInfo->lpCC->dcb.fOutxCtsFlow == TRUE) { - SendMessageA(hBox, CB_SETCURSEL, 1, 0); + SendMessageW(hBox, CB_SETCURSEL, 1, 0); lpDlgInfo->InitialFlowIndex = 1; } }
- if(LoadStringA(hDllInstance,IDS_FC_XONXOFF, str, 254)) + if(LoadStringW(hDllInstance, IDS_FC_XONXOFF, wstr, sizeof(wstr) / sizeof(wstr[0]))) { - SendMessageA(hBox, CB_INSERTSTRING, 2, (LPARAM)str); + SendMessageW(hBox, CB_INSERTSTRING, 2, (LPARAM)wstr); if(lpDlgInfo->lpCC->dcb.fOutX || lpDlgInfo->lpCC->dcb.fInX) { - SendMessageA(hBox, CB_SETCURSEL, 2, 0); + SendMessageW(hBox, CB_SETCURSEL, 2, 0); lpDlgInfo->InitialFlowIndex = 2; } } @@ -387,26 +365,26 @@ LPDIALOG_INFO lpDlgInfo; UINT Index;
- lpDlgInfo = (LPDIALOG_INFO) GetWindowLong(hDlg, DWL_USER); + lpDlgInfo = (LPDIALOG_INFO) GetWindowLongPtrW(hDlg, DWL_USER);
/* Baud rate */ - Index = SendMessage(GetDlgItem(hDlg, IDC_BAUDRATE), CB_GETCURSEL, 0, 0); - lpDlgInfo->lpCC->dcb.BaudRate = Bauds[Index].Baud; + Index = SendMessageW(GetDlgItem(hDlg, IDC_BAUDRATE), CB_GETCURSEL, 0, 0); + lpDlgInfo->lpCC->dcb.BaudRate = Bauds[Index];
/* Byte size */ - Index = SendMessage(GetDlgItem(hDlg, IDC_BYTESIZE), CB_GETCURSEL, 0, 0); - lpDlgInfo->lpCC->dcb.ByteSize = ByteSizes[Index].ByteSize; + Index = SendMessageW(GetDlgItem(hDlg, IDC_BYTESIZE), CB_GETCURSEL, 0, 0); + lpDlgInfo->lpCC->dcb.ByteSize = ByteSizes[Index];
/* Parity */ - Index = SendMessage(GetDlgItem(hDlg, IDC_PARITY), CB_GETCURSEL, 0, 0); - lpDlgInfo->lpCC->dcb.Parity = Paritys[Index].Parity; + Index = SendMessageW(GetDlgItem(hDlg, IDC_PARITY), CB_GETCURSEL, 0, 0); + lpDlgInfo->lpCC->dcb.Parity = Parities[Index].Parity;
/* Stop bits */ - Index = SendMessage(GetDlgItem(hDlg, IDC_STOPBITS), CB_GETCURSEL, 0, 0); + Index = SendMessageW(GetDlgItem(hDlg, IDC_STOPBITS), CB_GETCURSEL, 0, 0); lpDlgInfo->lpCC->dcb.StopBits = StopBits[Index].StopBit; /* Flow Control */ - Index = SendMessage(GetDlgItem(hDlg, IDC_FLOW), CB_GETCURSEL, 0, 0); + Index = SendMessageW(GetDlgItem(hDlg, IDC_FLOW), CB_GETCURSEL, 0, 0); if(lpDlgInfo->InitialFlowIndex != Index) { switch(Index) _____
Modified: trunk/reactos/lib/serialui/serialui.h --- trunk/reactos/lib/serialui/serialui.h 2005-04-06 12:32:14 UTC (rev 14526) +++ trunk/reactos/lib/serialui/serialui.h 2005-04-06 17:04:28 UTC (rev 14527) @@ -26,7 +26,19 @@
LPCOMMCONFIG lpCC; } DIALOG_INFO, *LPDIALOG_INFO;
+typedef struct _PARITY_INFO +{ + BYTE Parity; + UINT StrId; +} PARITY_INFO, *PPARITY_INFO;
+typedef struct _STOPBIT_INFO +{ + BYTE StopBit; + UINT StrId; +} STOPBIT_INFO, *PSTOPBIT_INFO; + + /************************************ * * EXPORTS