Exemple #1
0
void COptionsDlg::OnOK() 
{
	// for auto run
	{
		TCHAR szFileName[MAX_PATH] = {'\0'};
		GetModuleFileName(NULL, szFileName, sizeof(szFileName));
		HKEY hKey = NULL;

		DWORD dwDisposition;
		if (RegCreateKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_AUTORUN)), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) {
			if (m_cAutoRun.GetCheck() == 1) {
				RegSetValueEx(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), 0, REG_SZ, (LPBYTE)szFileName, _tcslen(szFileName));
			} else {
				RegDeleteValue(hKey, CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)));
			}
			RegCloseKey(hKey);
		}
	}

	// for file and directory name completion
	HKEY hKey = NULL;

	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) {
		DWORD dwCompletionChar;
		if (m_cFileCompletion.GetCheck() == 1) {
			dwCompletionChar = 0x9;	// use enum
		} else {
			dwCompletionChar = 0x0;
		}
		RegSetValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), 0, REG_DWORD,
			(LPBYTE)&dwCompletionChar, sizeof(dwCompletionChar));
		RegCloseKey(hKey);
	}

	// for icons in the taskbar's status area
	{
		// write data in registry
		AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CX)), m_cCx.GetCheck());
		AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_MX)), m_cMx.GetCheck());
		AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_META)), m_cM_.GetCheck());
		AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_SHIFT)), m_cShift.GetCheck());
		AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_CTRL)), m_cCtrl.GetCheck());
		AfxGetApp()->WriteProfileInt(CString(), CString(MAKEINTRESOURCE(IDS_REG_ENTRY_ALT)), m_cAlt.GetCheck());

		// set dll data
		CMainFrame *pMainFrame = static_cast<CMainFrame*>(AfxGetMainWnd());
		pMainFrame->EnableShell_NotifyIcon(CX_ICON, m_cCx.GetCheck());
		pMainFrame->EnableShell_NotifyIcon(MX_ICON, m_cMx.GetCheck());
		pMainFrame->EnableShell_NotifyIcon(META_ICON, m_cM_.GetCheck());
		pMainFrame->EnableShell_NotifyIcon(SHIFT_ICON, m_cShift.GetCheck());
		pMainFrame->EnableShell_NotifyIcon(CTRL_ICON, m_cCtrl.GetCheck());
		pMainFrame->EnableShell_NotifyIcon(ALT_ICON, m_cAlt.GetCheck());
	}

	CDialog::OnOK();
}