⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgconfig.cpp

📁 《Visual C++案例开发》源代码 注册表操作例程
💻 CPP
字号:
// DlgConfig.cpp : implementation file
//

#include "stdafx.h"
#include "LoginConfig.h"
#include "DlgConfig.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgConfig dialog


CDlgConfig::CDlgConfig(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgConfig::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgConfig)
	m_strName = "";
	m_strIp = "";
	m_strPort = "";
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDlgConfig::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgConfig)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgConfig, CDialog)
	//{{AFX_MSG_MAP(CDlgConfig)
	ON_BN_CLICKED(IDC_BTN_YES, OnBtnYes)
	ON_BN_CLICKED(IDC_BTN_CANCEL, OnBtnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgConfig message handlers

void CDlgConfig::OnBtnYes() 
{
	GetDlgItem(IDC_EDIT_NAME)->GetWindowText(m_strName);
	GetDlgItem(IDC_EDIT_IP)->GetWindowText(m_strIp);
	GetDlgItem(IDC_EDIT_PORT)->GetWindowText(m_strPort);

	if(SaveConfig())
		MessageBox("您所设置的参数已经保存成功!");
	else{
		MessageBox("您所设置的参数已经保存失败!");
		return;
	}

	CDialog::OnOK();
}

void CDlgConfig::OnBtnCancel() 
{
	CDialog::OnCancel();
}

BOOL CDlgConfig::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	if(!LoadConfig())
		MessageBox("导入参数失败!");

	GetDlgItem(IDC_EDIT_NAME)->SetWindowText(m_strName);
	GetDlgItem(IDC_EDIT_IP)->SetWindowText(m_strIp);
	GetDlgItem(IDC_EDIT_PORT)->SetWindowText(m_strPort);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

bool CDlgConfig::LoadConfig()
{
	char Vals[100];
	
	HKEY hk;
	DWORD rc = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\MyApp\\System",&hk);
	if(rc != ERROR_SUCCESS)	
		return false;
	
	DWORD lenIt = 100;
	DWORD dType;

	lenIt = 100;
	if(RegQueryValueEx(hk, "ServerName", NULL, &dType, (BYTE *)Vals, &lenIt) == ERROR_SUCCESS){
		m_strName=(CString)Vals;
		if(strlen(m_strName)<=0)	
			return false;
	}
	else{
		return false ;
	}

	lenIt = 100;
	if(RegQueryValueEx(hk, "ServerIP", NULL, &dType, (BYTE *)Vals, &lenIt) == ERROR_SUCCESS){
		m_strIp=(CString)Vals;
		if(strlen(m_strIp)<=0)	
			return false;
	}
	else{
		return false ;
	}

	lenIt = 100;
	if(RegQueryValueEx(hk, "ServerPort", NULL, &dType, (BYTE *)Vals, &lenIt) == ERROR_SUCCESS){
		m_strPort=(CString)Vals;
		if(strlen(m_strPort)<=0)	
			return false;
	}
	else{
		return false ;
	}

	::RegCloseKey(hk);

	return true;
}

bool CDlgConfig::SaveConfig()
{
	CString str = "";
	HKEY hKey;

    if (ERROR_SUCCESS != ::RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\MyApp\\System", &hKey)) 
		return false;
	
	try{	
		::RegSetValueEx(hKey, "ServerName",		0, REG_SZ, (LPBYTE)(LPCSTR)m_strName	, m_strName.GetLength()+1);
		::RegSetValueEx(hKey, "ServerIP",		0, REG_SZ, (LPBYTE)(LPCSTR)m_strIp		, m_strIp.GetLength()+1);
		::RegSetValueEx(hKey, "ServerPort",		0, REG_SZ, (LPBYTE)(LPCSTR)m_strPort	, m_strPort.GetLength()+1);
	
		::RegCloseKey(hKey);

	}
	catch(...){
		return false;	
	}

	return true;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -