#include "StrMain.h" // Defines // Compression types #define STR_DONT_RECOMPRESS 0 // Leave image compression (Don't re-compress) #define STR_J2K_LOSSY 1 // J2K Lossy #define STR_J2KLOSSLESS 2 // J2K Lossless #define STR_JPEG_LOSSY 3 // JPEG Lossy #define STR_JPEG_LOSSLESS 4 // JPEG Lossless // Registry location #define REGISTRY_LOCATION "SOFTWARE\\LEAD Technologies, Inc.\\API_DicomSTR" LRESULT CALLBACK OptionsDlgProc(HWND, UINT, WPARAM, LPARAM); L_VOID SaveInRegistry(HWND hDlg); L_VOID SetCompressionControl(HWND hDlg, L_UINT nCompression); L_INT GetComprssionFromDlg(HWND hDlg); extern L_CHAR gszServerName[64]; extern L_CHAR gszPeerIP[64]; extern L_CHAR gszClientName[64]; extern L_UINT guServerPort; extern L_UINT guCompression; extern L_UINT guTimeOut; // Options Dialog Procedure LRESULT CALLBACK OptionsDlgProc(HWND hMainDlg, UINT uiMessage, WPARAM wParam, LPARAM lParam) { L_BOOL bSuccess; L_CHAR szBuffer[64]; switch (uiMessage) { case WM_INITDIALOG: // Set the initial values for the controls SetDlgItemText(hMainDlg, IDC_EDIT_SVR_NAME, gszServerName); SetDlgItemText(hMainDlg, IDC_IPADDRESS_SERVERIP, gszPeerIP); SetDlgItemInt(hMainDlg, IDC_EDIT_SVR_PORT, guServerPort, FALSE); SetDlgItemText(hMainDlg, IDC_EDIT_CLIENT_NAME, gszClientName); SetDlgItemInt(hMainDlg, IDC_EDIT_TIME_OUT, guTimeOut, FALSE); SetCompressionControl(hMainDlg, guCompression); return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hMainDlg, 0); return 0; case IDOK: // Get the values from the controls GetDlgItemText(hMainDlg, IDC_EDIT_SVR_NAME, gszServerName, sizeof(gszServerName)); GetDlgItemText(hMainDlg, IDC_IPADDRESS_SERVERIP, gszPeerIP, sizeof(gszPeerIP)); guServerPort= GetDlgItemInt(hMainDlg, IDC_EDIT_SVR_PORT, &bSuccess, FALSE); if (!bSuccess) guServerPort = 104; GetDlgItemText(hMainDlg, IDC_EDIT_CLIENT_NAME, gszClientName, sizeof(gszClientName)); guTimeOut= GetDlgItemInt(hMainDlg, IDC_EDIT_TIME_OUT, &bSuccess, FALSE); if (!bSuccess) guTimeOut = 0; guCompression = GetComprssionFromDlg(hMainDlg); // Check the validity of data // Server Name if (lstrlen(gszServerName) == 0) { MessageBox(NULL, "Server name field should have a value!", "Storgae SCU", MB_OK | MB_ICONEXCLAMATION ); SetFocus(GetDlgItem(hMainDlg, IDC_EDIT_SVR_NAME)); return 0; } // IP Address if (lstrlen(gszPeerIP) == 0) { MessageBox(NULL, "Server IP field should have a value!", "Storgae SCU", MB_OK | MB_ICONEXCLAMATION ); SetFocus(GetDlgItem(hMainDlg, IDC_IPADDRESS_SERVERIP)); return 0; } // Server Port Number lstrcpy(szBuffer,""); GetDlgItemText(hMainDlg, IDC_EDIT_SVR_PORT, szBuffer, sizeof(szBuffer)); if (lstrlen(szBuffer) == 0) { MessageBox(NULL, "Server port number field should have a valid integer value!", "Storgae SCU", MB_OK | MB_ICONEXCLAMATION ); SetFocus(GetDlgItem(hMainDlg, IDC_EDIT_SVR_PORT)); return 0; } // Client Name if (lstrlen(gszClientName) == 0) { MessageBox(NULL, "Client name field should have a value!", "Storgae SCU", MB_OK | MB_ICONEXCLAMATION ); SetFocus(GetDlgItem(hMainDlg, IDC_EDIT_CLIENT_NAME)); return 0; } // Time-Out lstrcpy(szBuffer,""); GetDlgItemText(hMainDlg, IDC_EDIT_TIME_OUT, szBuffer, sizeof(szBuffer)); if (lstrlen(szBuffer) == 0) { MessageBox(NULL, "Time-Out field should have a value!", "Storgae SCU", MB_OK | MB_ICONEXCLAMATION ); SetFocus(GetDlgItem(hMainDlg, IDC_EDIT_TIME_OUT)); return 0; } // Save data in registry SaveInRegistry(hMainDlg); EndDialog(hMainDlg, 0); } return 0; case WM_CLOSE: EndDialog(hMainDlg, 0); return 0; } return 0; } // Save the data in the registry L_VOID SaveInRegistry(HWND hDlg) { HKEY hNewKey; if (RegCreateKey(HKEY_CURRENT_USER, REGISTRY_LOCATION, &hNewKey) != ERROR_SUCCESS) return; // Server name RegSetValueEx(hNewKey, "sServerName", 0, REG_SZ, (LPBYTE) gszServerName, lstrlen(gszServerName)+1); // Server IP RegSetValueEx(hNewKey, "dwServerIP", 0, REG_SZ, (LPBYTE) gszPeerIP, lstrlen(gszPeerIP)+1); // Server port number RegSetValueEx(hNewKey, "uServerPort", 0, REG_DWORD, (LPBYTE) &guServerPort, sizeof(guServerPort)); // Client Name RegSetValueEx(hNewKey, "sClientName", 0, REG_SZ, (LPBYTE) gszClientName, lstrlen(gszClientName)+1); // Time Out (Seconds) RegSetValueEx(hNewKey, "uTimeOut", 0, REG_DWORD, (LPBYTE) &guTimeOut, sizeof(guTimeOut)); // Compression RegSetValueEx(hNewKey, "uCompression", 0, REG_DWORD, (LPBYTE) &guCompression, sizeof(guCompression)); RegCloseKey(hNewKey); } // Set the saved compression L_VOID SetCompressionControl(HWND hDlg, L_UINT nCompression) { switch (nCompression) { case STR_J2K_LOSSY: CheckRadioButton(hDlg, IDC_R_DONTCOMPRESS, IDC_R_JPEGLOSSLESS, IDC_R_J2KLOSSY); break; case STR_J2KLOSSLESS: CheckRadioButton(hDlg, IDC_R_DONTCOMPRESS, IDC_R_JPEGLOSSLESS, IDC_R_J2KLOSSLESS); break; case STR_JPEG_LOSSY: CheckRadioButton(hDlg, IDC_R_DONTCOMPRESS, IDC_R_JPEGLOSSLESS, IDC_R_JPEGLOSSY); break; case STR_JPEG_LOSSLESS: CheckRadioButton(hDlg, IDC_R_DONTCOMPRESS, IDC_R_JPEGLOSSLESS, IDC_R_JPEGLOSSLESS); break; default: CheckRadioButton(hDlg, IDC_R_DONTCOMPRESS, IDC_R_JPEGLOSSLESS, IDC_R_DONTCOMPRESS); break; } } L_INT GetComprssionFromDlg(HWND hDlg) { if (IsDlgButtonChecked(hDlg,IDC_R_J2KLOSSY) == BST_CHECKED) return STR_J2K_LOSSY; if (IsDlgButtonChecked(hDlg,IDC_R_J2KLOSSLESS) == BST_CHECKED) return STR_J2KLOSSLESS; if (IsDlgButtonChecked(hDlg,IDC_R_JPEGLOSSY) == BST_CHECKED) return STR_JPEG_LOSSY; if (IsDlgButtonChecked(hDlg,IDC_R_JPEGLOSSLESS) == BST_CHECKED) return STR_JPEG_LOSSLESS; return STR_DONT_RECOMPRESS; }