1 // OptionsDlg.cpp : implementation file
\r
5 #include "xkeymacs.h"
\r
6 #include "OptionsDlg.h"
\r
11 #define new DEBUG_NEW
\r
13 static char THIS_FILE[] = __FILE__;
\r
16 /////////////////////////////////////////////////////////////////////////////
\r
17 // COptionsDlg dialog
\r
20 COptionsDlg::COptionsDlg(CWnd *pParent /*=NULL*/)
\r
21 : CDialog(COptionsDlg::IDD, pParent)
\r
23 //{{AFX_DATA_INIT(COptionsDlg)
\r
27 COptionsDlg::~COptionsDlg()
\r
31 void COptionsDlg::DoDataExchange(CDataExchange *pDX)
\r
33 CDialog::DoDataExchange(pDX);
\r
34 //{{AFX_DATA_MAP(COptionsDlg)
\r
35 DDX_Control(pDX, IDC_M_X, m_cMx);
\r
36 DDX_Control(pDX, IDC_M_, m_cM_);
\r
37 DDX_Control(pDX, IDC_ALT, m_cAlt);
\r
38 DDX_Control(pDX, IDC_SHIFT, m_cShift);
\r
39 DDX_Control(pDX, IDC_CTRL, m_cCtrl);
\r
40 DDX_Control(pDX, IDC_C_X_, m_cCx);
\r
41 DDX_Control(pDX, IDC_FILE_COMPLETION, m_cFileCompletion);
\r
42 DDX_Control(pDX, IDC_AUTO_RUN, m_cAutoRun);
\r
43 DDX_Control(pDX, IDOK, m_cOK);
\r
48 BEGIN_MESSAGE_MAP(COptionsDlg, CDialog)
\r
49 //{{AFX_MSG_MAP(COptionsDlg)
\r
53 /////////////////////////////////////////////////////////////////////////////
\r
54 // COptionsDlg message handlers
\r
56 BOOL COptionsDlg::OnInitDialog()
\r
58 CDialog::OnInitDialog();
\r
61 m_cAutoRun.SetCheck(0);
\r
65 m_cShift.SetCheck(0);
\r
66 m_cCtrl.SetCheck(0);
\r
71 TCHAR szFileName[MAX_PATH] = {'\0'};
\r
72 GetModuleFileName(NULL, szFileName, sizeof(szFileName));
\r
75 if (RegOpenKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_AUTORUN)), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS
\r
76 || RegOpenKeyEx(HKEY_LOCAL_MACHINE, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_AUTORUN)), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) {
\r
77 DWORD dwType = REG_SZ;
\r
78 TCHAR szSavedFileName[MAX_PATH] = {'\0'};
\r
79 DWORD dwBufLen = sizeof(szSavedFileName);
\r
80 RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), NULL, &dwType,
\r
81 (LPBYTE)szSavedFileName, &dwBufLen);
\r
84 if (!_tcsnicmp(szFileName, szSavedFileName, sizeof(szFileName))) {
\r
85 m_cAutoRun.SetCheck(1);
\r
90 // for file and directory name completion
\r
93 if (RegOpenKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS
\r
94 || RegOpenKeyEx(HKEY_LOCAL_MACHINE, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {
\r
95 DWORD dwType = REG_DWORD;
\r
96 DWORD dwCompletionChar = 0;
\r
97 DWORD dwcbData = sizeof(dwCompletionChar);
\r
98 RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), NULL, &dwType,
\r
99 (LPBYTE)&dwCompletionChar, &dwcbData);
\r
101 if (dwCompletionChar == 0x9) {
\r
102 m_cFileCompletion.SetCheck(1);
\r
106 // for icons in the taskbar's status area
\r
107 m_cCx.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CX)), 0));
\r
108 m_cMx.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_MX)), 0));
\r
109 m_cM_.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_META)), 0));
\r
110 m_cShift.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_SHIFT)), 0));
\r
111 m_cCtrl.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CTRL)), 0));
\r
112 m_cAlt.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_ALT)), 0));
\r
114 return TRUE; // return TRUE unless you set the focus to a control
\r
115 // EXCEPTION: OCX Property Pages should return FALSE
\r
118 void COptionsDlg::OnOK()
\r
122 TCHAR szFileName[MAX_PATH] = {'\0'};
\r
123 GetModuleFileName(NULL, szFileName, sizeof(szFileName));
\r
126 DWORD dwDisposition;
\r
127 if (RegCreateKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_AUTORUN)), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) {
\r
128 if (m_cAutoRun.GetCheck() == 1) {
\r
129 RegSetValueEx(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), 0, REG_SZ, (LPBYTE)szFileName, _tcslen(szFileName));
\r
131 RegDeleteValue(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)));
\r
137 // for file and directory name completion
\r
140 if (RegCreateKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL) == ERROR_SUCCESS) {
\r
141 DWORD dwCompletionChar;
\r
142 if (m_cFileCompletion.GetCheck() == 1) {
\r
143 dwCompletionChar = 0x9; // use enum
\r
145 dwCompletionChar = 0x0;
\r
147 RegSetValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), 0, REG_DWORD,
\r
148 (LPBYTE)&dwCompletionChar, sizeof(dwCompletionChar));
\r
152 // for icons in the taskbar's status area
\r
154 // write data in registry
\r
155 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CX)), m_cCx.GetCheck());
\r
156 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_MX)), m_cMx.GetCheck());
\r
157 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_META)), m_cM_.GetCheck());
\r
158 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_SHIFT)), m_cShift.GetCheck());
\r
159 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CTRL)), m_cCtrl.GetCheck());
\r
160 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_ALT)), m_cAlt.GetCheck());
\r
163 CMainFrame *pMainFrame = static_cast<CMainFrame*>(AfxGetMainWnd());
\r
164 pMainFrame->EnableShell_NotifyIcon(CX_ICON, m_cCx.GetCheck());
\r
165 pMainFrame->EnableShell_NotifyIcon(MX_ICON, m_cMx.GetCheck());
\r
166 pMainFrame->EnableShell_NotifyIcon(META_ICON, m_cM_.GetCheck());
\r
167 pMainFrame->EnableShell_NotifyIcon(SHIFT_ICON, m_cShift.GetCheck());
\r
168 pMainFrame->EnableShell_NotifyIcon(CTRL_ICON, m_cCtrl.GetCheck());
\r
169 pMainFrame->EnableShell_NotifyIcon(ALT_ICON, m_cAlt.GetCheck());
\r