1 // OptionsDlg.cpp : implementation file
\r
4 #include "optionsdlg.h"
\r
6 #include "../xkeymacsdll/defs.h"
\r
9 #define new DEBUG_NEW
\r
11 static char THIS_FILE[] = __FILE__;
\r
14 /////////////////////////////////////////////////////////////////////////////
\r
15 // COptionsDlg dialog
\r
18 COptionsDlg::COptionsDlg(CWnd *pParent /*=NULL*/)
\r
19 : CDialog(COptionsDlg::IDD, pParent)
\r
21 //{{AFX_DATA_INIT(COptionsDlg)
\r
25 COptionsDlg::~COptionsDlg()
\r
29 void COptionsDlg::DoDataExchange(CDataExchange *pDX)
\r
31 CDialog::DoDataExchange(pDX);
\r
32 //{{AFX_DATA_MAP(COptionsDlg)
\r
33 DDX_Control(pDX, IDC_M_X, m_cMx);
\r
34 DDX_Control(pDX, IDC_M_, m_cM_);
\r
35 DDX_Control(pDX, IDC_ALT, m_cAlt);
\r
36 DDX_Control(pDX, IDC_SHIFT, m_cShift);
\r
37 DDX_Control(pDX, IDC_CTRL, m_cCtrl);
\r
38 DDX_Control(pDX, IDC_C_X_, m_cCx);
\r
39 DDX_Control(pDX, IDC_FILE_COMPLETION, m_cFileCompletion);
\r
40 DDX_Control(pDX, IDC_AUTO_RUN, m_cAutoRun);
\r
41 DDX_Control(pDX, IDOK, m_cOK);
\r
46 BEGIN_MESSAGE_MAP(COptionsDlg, CDialog)
\r
47 //{{AFX_MSG_MAP(COptionsDlg)
\r
51 /////////////////////////////////////////////////////////////////////////////
\r
52 // COptionsDlg message handlers
\r
54 BOOL COptionsDlg::OnInitDialog()
\r
56 CDialog::OnInitDialog();
\r
59 m_cAutoRun.SetCheck(0);
\r
63 m_cShift.SetCheck(0);
\r
64 m_cCtrl.SetCheck(0);
\r
69 TCHAR szFileName[MAX_PATH] = {'\0'};
\r
70 GetModuleFileName(NULL, szFileName, sizeof(szFileName));
\r
73 if (RegOpenKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_AUTORUN)), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS
\r
74 || RegOpenKeyEx(HKEY_LOCAL_MACHINE, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_AUTORUN)), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) {
\r
75 DWORD dwType = REG_SZ;
\r
76 TCHAR szSavedFileName[MAX_PATH] = {'\0'};
\r
77 DWORD dwBufLen = sizeof(szSavedFileName);
\r
78 RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), NULL, &dwType,
\r
79 (LPBYTE)szSavedFileName, &dwBufLen);
\r
82 if (!_tcsnicmp(szFileName, szSavedFileName, sizeof(szFileName))) {
\r
83 m_cAutoRun.SetCheck(1);
\r
88 // for file and directory name completion
\r
91 if (RegOpenKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS
\r
92 || RegOpenKeyEx(HKEY_LOCAL_MACHINE, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {
\r
93 DWORD dwType = REG_DWORD;
\r
94 DWORD dwCompletionChar = 0;
\r
95 DWORD dwcbData = sizeof(dwCompletionChar);
\r
96 RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), NULL, &dwType,
\r
97 (LPBYTE)&dwCompletionChar, &dwcbData);
\r
99 if (dwCompletionChar == 0x9) {
\r
100 m_cFileCompletion.SetCheck(1);
\r
104 // for icons in the taskbar's status area
\r
105 m_cCx.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CX)), 0));
\r
106 m_cMx.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_MX)), 0));
\r
107 m_cM_.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_META)), 0));
\r
108 m_cShift.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_SHIFT)), 0));
\r
109 m_cCtrl.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CTRL)), 0));
\r
110 m_cAlt.SetCheck(AfxGetApp()->GetProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_ALT)), 0));
\r
112 return TRUE; // return TRUE unless you set the focus to a control
\r
113 // EXCEPTION: OCX Property Pages should return FALSE
\r
116 void COptionsDlg::OnOK()
\r
120 TCHAR szFileName[MAX_PATH] = {'\0'};
\r
121 GetModuleFileName(NULL, szFileName, sizeof(szFileName));
\r
124 DWORD dwDisposition;
\r
125 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
126 if (m_cAutoRun.GetCheck() == 1) {
\r
127 RegSetValueEx(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), 0, REG_SZ, (LPBYTE)szFileName, _tcslen(szFileName));
\r
129 RegDeleteValue(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)));
\r
135 // for file and directory name completion
\r
138 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
139 DWORD dwCompletionChar;
\r
140 if (m_cFileCompletion.GetCheck() == 1) {
\r
141 dwCompletionChar = 0x9; // use enum
\r
143 dwCompletionChar = 0x0;
\r
145 RegSetValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), 0, REG_DWORD,
\r
146 (LPBYTE)&dwCompletionChar, sizeof(dwCompletionChar));
\r
150 // for icons in the taskbar's status area
\r
152 // write data in registry
\r
153 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CX)), m_cCx.GetCheck());
\r
154 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_MX)), m_cMx.GetCheck());
\r
155 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_META)), m_cM_.GetCheck());
\r
156 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_SHIFT)), m_cShift.GetCheck());
\r
157 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CTRL)), m_cCtrl.GetCheck());
\r
158 AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_ALT)), m_cAlt.GetCheck());
\r
161 CMainFrame *pMainFrame = static_cast<CMainFrame*>(AfxGetMainWnd());
\r
162 pMainFrame->EnableShell_NotifyIcon(CX_ICON, m_cCx.GetCheck());
\r
163 pMainFrame->EnableShell_NotifyIcon(MX_ICON, m_cMx.GetCheck());
\r
164 pMainFrame->EnableShell_NotifyIcon(META_ICON, m_cM_.GetCheck());
\r
165 pMainFrame->EnableShell_NotifyIcon(SHIFT_ICON, m_cShift.GetCheck());
\r
166 pMainFrame->EnableShell_NotifyIcon(CTRL_ICON, m_cCtrl.GetCheck());
\r
167 pMainFrame->EnableShell_NotifyIcon(ALT_ICON, m_cAlt.GetCheck());
\r