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

📄 mypropertypage8.cpp

📁 这是用VC写的一个写字板程序!有一些特别的功能!具体我忘了你还是好好看看!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "MyToolPad.h"
#include "MyPropertyPage8.h"
#include "OrganizeInifile.h"
#include "MyPropertySheet.h"

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

extern CMyPropertySheet *m_sheet;



IMPLEMENT_DYNCREATE(CMyPropertyPage8, CPropertyPage)

CMyPropertyPage8::CMyPropertyPage8() : CPropertyPage(CMyPropertyPage8::IDD)
{
	GetDevicePath();

	char m_buffer[200],*m_add;
	COrganizeInifile m_ini;
	m_add=m_MTUpath.GetBuffer(m_MTUpath.GetLength());
	strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"MaxMTU"));
	int m_max=atoi(m_buffer);
	m_add=m_Otherpath.GetBuffer(m_Otherpath.GetLength());
	strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"DefaultTTL"));
	int m_tl =atoi(m_buffer);
	m_add=m_Otherpath.GetBuffer(m_Otherpath.GetLength());
	strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"DefaultRcvWindow"));
	int m_rec=atoi(m_buffer);
	m_add=m_Otherpath.GetBuffer(m_Otherpath.GetLength());
	strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"NameSrvQueryTimeout"));
	int m_que=atoi(m_buffer);

	//{{AFX_DATA_INIT(CMyPropertyPage8)
	m_maxmtu=m_max;
	m_ttl =m_tl;
	m_receive =m_rec;
	m_querytime=m_que;
	m_files =0;
	m_folders= 0;
	m_clear =FALSE;
	m_extname=_T("");
	m_linkfile=_T("");
	m_foot = _T("");
	m_menu = _T("");
	//}}AFX_DATA_INIT

	m_changed=FALSE;
}

CMyPropertyPage8::~CMyPropertyPage8()
{
}

void CMyPropertyPage8::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyPropertyPage8)
	DDX_Control(pDX, IDC_RIGHT, m_ctrl2);
	DDX_Control(pDX, IDC_DEFAULT, m_ctrl1);
	DDX_Control(pDX, IDC_FILELINKLIST, m_linklist);
	DDX_Control(pDX, IDC_BROWSE, m_browse);
	DDX_Control(pDX, IDC_LINK, m_link);
	DDX_Control(pDX, IDC_PATHNUMBER, m_pathcache);
	DDX_Control(pDX, IDC_FOLDERNUMBER, m_namecache);
	DDX_Control(pDX, IDC_EFFECT, m_effect);
	DDX_Text(pDX, IDC_MAXMTU, m_maxmtu);
	DDV_MinMaxInt(pDX, m_maxmtu, 0, 65535);
	DDX_Text(pDX, IDC_TTL, m_ttl);
	DDV_MinMaxInt(pDX, m_ttl, 0, 255);
	DDX_Text(pDX, IDC_RECEIVEWINDOW, m_receive);
	DDV_MinMaxInt(pDX, m_receive, 0, 65535);
	DDX_Text(pDX, IDC_QUERYTIME, m_querytime);
	DDV_MinMaxInt(pDX, m_querytime, 0, 65535);
	DDX_Text(pDX, IDC_FILENUMBER, m_files);
	DDV_MinMaxInt(pDX, m_files, 1, 500);
	DDX_Text(pDX, IDC_FOLDERS, m_folders);
	DDV_MinMaxInt(pDX, m_folders, 1, 20000);
	DDX_Check(pDX, IDC_CLEAREMPTYDIR, m_clear);
	DDX_Text(pDX, IDC_EXTNAME, m_extname);
	DDX_Text(pDX, IDC_LINKTOFILE, m_linkfile);
	DDX_Text(pDX, IDC_FOOTNAME, m_foot);
	DDX_Text(pDX, IDC_MENUNAME, m_menu);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMyPropertyPage8, CPropertyPage)
	//{{AFX_MSG_MAP(CMyPropertyPage8)
	ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
	ON_BN_CLICKED(IDC_DELETESTART, OnDeleteLink)
	ON_BN_CLICKED(IDC_DEFAULT, OnDefault)
	ON_BN_CLICKED(IDC_EFFECT, OnEffect)
	ON_BN_CLICKED(IDC_DESKTOP, OnDesktop)
	ON_BN_CLICKED(IDC_MOBILE, OnMobile)
	ON_BN_CLICKED(IDC_SERVER, OnServer)
	ON_EN_CHANGE(IDC_MAXMTU, OnChangeMaxmtu)
	ON_EN_CHANGE(IDC_QUERYTIME, OnChangeQuerytime)
	ON_EN_CHANGE(IDC_RECEIVEWINDOW, OnChangeReceivewindow)
	ON_EN_CHANGE(IDC_TTL, OnChangeTtl)
	ON_WM_HSCROLL()
	ON_BN_CLICKED(IDC_RIGHT, OnRight)
	ON_EN_CHANGE(IDC_FILENUMBER, OnChangeFilenumber)
	ON_EN_CHANGE(IDC_FOLDERS, OnChangeFolders)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	ON_EN_CHANGE(IDC_EXTNAME, OnChangeExtname)
	ON_NOTIFY(NM_RCLICK, IDC_FILELINKLIST, OnRclickFilelinklist)
	ON_NOTIFY(LVN_KEYDOWN, IDC_FILELINKLIST, OnKeydownFilelinklist)
	ON_NOTIFY(LVN_COLUMNCLICK, IDC_FILELINKLIST, OnColumnclickFilelinklist)
	ON_EN_CHANGE(IDC_LINKTOFILE, OnChangeLinktofile)
	ON_EN_CHANGE(IDC_FOOTNAME, OnChangeFootname)
	ON_EN_CHANGE(IDC_MENUNAME, OnChangeMenuname)
	ON_BN_CLICKED(IDC_LINK, OnLink)
	ON_BN_CLICKED(IDC_CLEAREMPTYDIR, OnClearemptydir)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()



void CMyPropertyPage8::OnDefault() 
{
	m_maxmtu=1500;
	m_ttl =32;
	m_receive=8192;
	m_querytime=750;
	switch(m_platmode)
	{
	case 1:
		m_files =32;
		m_folders=677;
		break;
	case 2:
		m_files =16;
		m_folders=337;
		break;
	case 3:
		m_files =64;
		m_folders=2729;
		break;
	}
	UpdateData(FALSE);
	OnChangeFilenumber();
	OnChangeFolders();
	OnEffect();
}

void CMyPropertyPage8::OnEffect() 
{
	UpdateData(TRUE);
	COrganizeInifile m_ini;
	CString m_value;

	m_value.Format("%d",m_maxmtu);
	m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_MTUpath,_T("MaxMTU"),m_value);
	m_value.Format("%d",m_ttl);
	m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_Otherpath,_T("DefaultTTL"),m_value);
	m_value.Format("%d",m_receive);
	m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_Otherpath,_T("DefaultRcvWindow"),m_value);
	m_value.Format("%d",m_querytime);
	m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_Otherpath,_T("NameSrvQueryTimeout"),m_value);

	CString m_path;
	switch(m_platmode)
	{
	case 1:
		m_path=m_FilePath+_T("\\Desktop");
		break;
	case 2:
		m_path=m_FilePath+_T("\\Mobile");
		break;
	case 3:
		m_path=m_FilePath+_T("\\Server");
		break;
	}
	m_ini.CreateBinaryKey(HKEY_LOCAL_MACHINE,m_path,_T("NameCache"),(long)m_files);
	m_ini.CreateBinaryKey(HKEY_LOCAL_MACHINE,m_path,_T("PathCache"),(long)m_folders);
	ToSystemIni();

	m_changed=FALSE;
	EnablePanel();
}

void CMyPropertyPage8::OnDesktop() 
{
	m_platmode=1;
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::OnMobile() 
{
	m_platmode=2;
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::OnServer() 
{
	m_platmode=3;
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::OnChangeMaxmtu() 
{
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::OnChangeQuerytime() 
{
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::OnChangeReceivewindow() 
{
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::OnChangeTtl() 
{
	m_changed=TRUE;
	EnablePanel();
}

void CMyPropertyPage8::ShowMessage()
{
	m_files=m_namecache.GetPos();
	m_folders=m_pathcache.GetPos();
	UpdateData(FALSE);
}

void CMyPropertyPage8::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	m_changed=TRUE;
	EnablePanel();
	switch(nSBCode)
	{
	case SB_LEFT:
		ShowMessage();
		break;
	case SB_ENDSCROLL:
		ShowMessage();
		break;
	case SB_LINELEFT:
		ShowMessage();
		break;
	case SB_LINERIGHT:
		ShowMessage();
		break;
	case SB_PAGELEFT:
		ShowMessage();
		break;
	case SB_PAGERIGHT:
		ShowMessage();
		break;
	case SB_RIGHT:
		ShowMessage();
		break;
	case SB_THUMBPOSITION:
		ShowMessage();
		break;
	case SB_THUMBTRACK:
		ShowMessage();
		break;
	}

	CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}


void CMyPropertyPage8::InitPanel()
{
	CWinApp* pApp = AfxGetApp();

	cil1.Create(32,32,TRUE,2,2);
	cil1.Add(pApp->LoadIcon(IDI_MALE));
	cil1.Add(pApp->LoadIcon(IDI_FEMALE));
	m_linklist.SetImageList(&cil1,LVSIL_NORMAL);
	
	cil2.Create(16,16,TRUE,2,2);
	cil2.Add(pApp->LoadIcon(IDI_MALE));
	cil2.Add(pApp->LoadIcon(IDI_FEMALE));
	m_linklist.SetImageList(&cil2,LVSIL_SMALL);

	LV_COLUMN lvc;
	lvc.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
	lvc.fmt=LVCFMT_LEFT;

	char *caption[]={"扩展名","被关联的程序或外壳命令"};
	int subitem[]={80,400};
	for(int i=0;i<2;i++)
	{
		lvc.pszText=caption[i];
		lvc.iSubItem=i;
		lvc.cx=subitem[i];
		m_linklist.InsertColumn(i,&lvc);
	}

	AllLinkToList();

	m_linklist.SetBkColor(RGB(0,128,128));
	m_linklist.SetTextColor(RGB(255,255,0));
	m_linklist.SetTextBkColor(RGB(0,128,128));
	
	GetFileSystem();
	UpdateData(FALSE);
}

BOOL CMyPropertyPage8::FileExist(CString m_file)
{
	BOOL ret=FALSE;
	if(m_file==_T(""))
		return ret;

	HANDLE file=CreateFile(m_file,0,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if(file!=INVALID_HANDLE_VALUE)
	{
		CloseHandle(file);
		ret=TRUE;
	}
	return ret;
}

void CMyPropertyPage8::EnablePanel()
{
	UpdateData(TRUE);
	BOOL m_enable=(m_extname!=_T(""));
	m_browse.EnableWindow(m_enable);
	m_enable=m_enable && (m_foot!=_T("")) && (m_menu!=_T(""));
	m_link.EnableWindow(m_enable && FileExist(m_linkfile));

	m_effect.EnableWindow(m_changed);
}

void CMyPropertyPage8::ResetToDefault()
{
	m_maxmtu=1500;
	m_ttl =32;
	m_receive=8192;
	m_querytime=750;
	UpdateData(FALSE);
}

void CMyPropertyPage8::SetToRegistry()
{
	COrganizeInifile m_ini;
}

BOOL CMyPropertyPage8::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	m_tooltip.Create(this);
	m_tooltip.Activate(TRUE);
	m_tooltip.AddTool(GetDlgItem(IDC_MAXMTU),"最大MTU单元");
	m_tooltip.AddTool(GetDlgItem(IDC_TTL),"TTL数目");
	m_tooltip.AddTool(GetDlgItem(IDC_RECEIVEWINDOW),"接收缓冲区大小");
	m_tooltip.AddTool(GetDlgItem(IDC_QUERYTIME),"通讯查询时间");
	m_tooltip.AddTool(GetDlgItem(IDC_DESKTOP),"如果是台式机,请选此项");
	m_tooltip.AddTool(GetDlgItem(IDC_MOBILE),"如果是便携机,请选此项");
	m_tooltip.AddTool(GetDlgItem(IDC_SERVER),"如果是服务器,请选此项");
	m_tooltip.AddTool(GetDlgItem(IDC_FILENUMBER),"系统缓冲文件数");
	m_tooltip.AddTool(GetDlgItem(IDC_FOLDERS),"系统缓冲搜索路径数");
	m_tooltip.AddTool(GetDlgItem(IDC_FOLDERNUMBER),"系统缓冲文件数");
	m_tooltip.AddTool(GetDlgItem(IDC_PATHNUMBER),"系统缓冲搜索路径数");
	m_tooltip.AddTool(GetDlgItem(IDC_DEFAULT),"Windows系统默认值(并非最优)");
	m_tooltip.AddTool(GetDlgItem(IDC_RIGHT),"比较好的设置");
	m_tooltip.AddTool(GetDlgItem(IDC_EFFECT),"设置到系统(重新启动有效)");
	m_tooltip.AddTool(GetDlgItem(IDC_CLEAREMPTYDIR),"退出时清除空目录和空文件(费时较长)");
	m_tooltip.AddTool(GetDlgItem(IDC_LINK),"将指定扩展名关联到指定可执行程序");
	m_tooltip.AddTool(GetDlgItem(IDC_EXTNAME),"指定扩展名");
	m_tooltip.AddTool(GetDlgItem(IDC_LINKTOFILE),"被关联的可执行文件");
	m_tooltip.AddTool(GetDlgItem(IDC_FOOTNAME),"Windows资源管理器中显示的文件类型名");
	m_tooltip.AddTool(GetDlgItem(IDC_MENUNAME),"Windows资源管理器中右键菜单名");
	m_tooltip.AddTool(GetDlgItem(IDC_BROWSE),"寻找可执行文件");

	m_clear =m_sheet->m_ClearEmpty;
	InitPanel();
	EnablePanel();

	return TRUE;
}

void CMyPropertyPage8::GetDevicePath()
{
	char m_key[200]="Enum\\Root\\Net",m_buffer[255];
	char m_name[200],m_this[100];
	HKEY m_hkey;
	DWORD m_namelen=200,m_index=0;
	DWORD m_attr=REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_NONE|REG_SZ;
	memset(m_name,0,200);
	COrganizeInifile m_ini;

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_key,0,KEY_ALL_ACCESS,&m_hkey)==ERROR_SUCCESS)
	{
		m_namelen=200;
		memset(m_name,0,200);

		while(RegEnumKey(m_hkey,m_index,m_name,m_namelen)==ERROR_SUCCESS)
		{
			m_index++;
			wsprintf(m_buffer,"%s\\%s",m_key,m_name);

			strcpy(m_this,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_buffer,"DeviceDesc"));
			if(strcmp(m_this,"拨号网络适配器")==0)
			{
				strcat(m_buffer,"\\Bindings");

				DWORD m_datalen=200;
				DWORD m_thisindex=0;
				char  m_data[200];

				m_namelen=200;
				memset(m_name,0,200);
				memset(m_data,0,200);
				HKEY m_thiskey=0;
				if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_buffer,0,KEY_ALL_ACCESS,&m_thiskey)==ERROR_SUCCESS)
				{
					while(RegEnumValue(m_thiskey,m_thisindex,m_name,&m_namelen,NULL,&m_attr,(LPBYTE)m_data,&m_datalen)==ERROR_SUCCESS)
					{
						if(strstr(m_name,"MSTCP")!=0)
							break;

						m_thisindex++;
						m_namelen=200;
						m_datalen=200;
						memset(m_data,0,200);
						memset(m_name,0,200);
					}
					RegCloseKey(m_thiskey);

⌨️ 快捷键说明

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