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

📄 page1.cpp

📁 C语言课程设计案例精编
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "Page.h"
#include "Page1.h"
#include"Lockdlg.h"
#include"PageDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
#include<wininet.h>
#pragma comment(lib,"wininet.lib")

#include <winsock2.h>
#pragma comment(lib, "wsock32")
#define 	WM_SOCKET_NOTIFY (WM_USER + 11) 

char   m_szIPAddr[32]={0};
SOCKET m_sock;
ULONG  m_ulTime ;


IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
	//{{AFX_DATA_INIT(CPage1)
	m_bTopMost = (::GetPrivateProfileInt("Settings","TopMost",1,".\\Settings.ini")==0? false:true);
	m_check_minimize =(::GetPrivateProfileInt("Settings","Minimize",0,".\\Settings.ini")==0 ?false:true);
	m_check_bShowSmall = (::GetPrivateProfileInt("Settings","ShowSmall",1,".\\Settings.ini")==0 ?false:true);
	//}}AFX_DATA_INIT



}

CPage1::~CPage1()
{
}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_COMBO1, m_cc);
	DDX_Control(pDX, IDC_TEXTOUT, m_edit);
	DDX_Control(pDX, IDC_STATIC_LINK, m_link);
	DDX_Control(pDX, IDC_SLIDER1, m_sld);
	DDX_Check(pDX, IDC_TOPMOST, m_bTopMost);
	DDX_Check(pDX, IDC_CHECK_MINIMIZE, m_check_minimize);
	DDX_Check(pDX, IDC_SHOW_SMALL, m_check_bShowSmall);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CPage1)
	ON_WM_LBUTTONDOWN()
	ON_BN_CLICKED(IDC_TOPMOST, OnTopmost)
	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER1, OnReleasedcaptureSlider1)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_LOCK, OnLock)
	ON_BN_CLICKED(IDC_HIDE, OnHide)
	ON_BN_CLICKED(IDC_CHECK_MINIMIZE, OnCheckMinimize)
	ON_BN_CLICKED(IDC_VIEWDATE, OnViewdate)
	ON_BN_CLICKED(IDC_SHOWFLASH, OnShowflash)
	ON_BN_CLICKED(IDC_SHOW_SMALL, OnShowSmall)
	ON_WM_HSCROLL()
	ON_BN_CLICKED(IDC_STATIC_LINK, OnStaticLink)
	ON_BN_CLICKED(IDC_JIAOZHENG, OnJiaozheng)
	ON_WM_TIMER()
	ON_MESSAGE(WM_SOCKET_NOTIFY,OnSocketNotify)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_BN_CLICKED(IDC_JIANCE, OnJiance)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers

void CPage1::OnLButtonDown(UINT nFlags, CPoint point) 
{

   AfxGetMainWnd()->SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,0);

	CPropertyPage::OnLButtonDown(nFlags, point);
}

void CPage1::OnTopmost() 
{
	UpdateData(true);

	if(m_bTopMost)
	{
		AfxGetMainWnd()->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
		m_bTopMost=true;
		GetDlgItem(IDC_STATE)->SetWindowText("设置最前");
	}
	else
	{
		AfxGetMainWnd()->SetWindowPos(&CWnd::wndNoTopMost ,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
		m_bTopMost=false;
		GetDlgItem(IDC_STATE)->SetWindowText("取消最前");
	}
		
	::WritePrivateProfileString("Settings","TopMost",m_bTopMost ? "1":"0",".\\Settings.ini");


}



BOOL CPage1::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
/**********************************对话框透明**************************************/	
	CString str3;
    if( ((CPageDlg*)GetParent())->GetOSVersion()=="Win2000" )       //保证在Win2000 WinXp中才调用
	{		

		m_sld.SetRange(10,255);
		m_sld.SetPos(::GetPrivateProfileInt("Settings","nTrans",240,".\\Settings.ini"));
		
		SetWindowLong(AfxGetMainWnd()->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(AfxGetMainWnd()->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
		HINSTANCE hInst = LoadLibrary("User32.DLL"); 
		if(hInst) 
		{ 
			typedef BOOL  (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); 
			MYFUNC fun =(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
			
			fun(AfxGetMainWnd()->GetSafeHwnd(),0,m_sld.GetPos(),2); 

			FreeLibrary(hInst); 
		}

		str3.Format("窗体的透明度:%%%d",100 * m_sld.GetPos() / 255);
		SetDlgItemText(IDC_SLD,str3);
	}
	else  //即:if( ((CPageDlg*)GetParent())->GetOSVersion()=="Win98")	
	{
		str3="该系统不支持窗体透明";
		SetDlgItemText(IDC_SLD,str3);
		GetDlgItem(IDC_SLIDER1)->EnableWindow(false);
		//GetDlgItem(IDC_SLIDER1)->ShowWindow(false);
		//GetDlgItem(IDC_SLD)->ShowWindow(false);
		
	}
/**********************************对话框透明**************************************/
    OnTopmost();

	LOGFONT lf;
	::ZeroMemory(&lf,sizeof(lf));  //API函数,它将一块内存清零
	lf.lfHeight =180;         
	lf.lfWeight =FW_BOLD;     //粗体,  FW_NORMAL常规
	lf.lfItalic =false;
	
	::lstrcpy(lf.lfFaceName ,"Times New Roman"); 
													 //::lstrcpy也是API函数,它将一个文本字符串从一个内存位置复制到另一个内存位置
													 //你也可以用C函数memset和 strcpy(实际上,应该调用 _tcscpy()而不是strcpy这样就能
													 //处理ANSI或Unicode  字符了),但是经常调用API函数减少了静态连接库的程序代码

	font2.CreatePointFontIndirect(&lf);
	GetDlgItem(IDC_EDIT1_TIMENOW)->SetFont(&font2);
	GetDlgItem(IDC_EDIT2_TIMESET)->SetFont(&font2);
	GetDlgItem(IDC_EDIT3_TIMELEFT)->SetFont(&font2);   //创建和设置字体


	CTime m_now=CTime::GetCurrentTime();
	CString str=m_now.Format("%H:%M:%S");
	SetDlgItemText(IDC_EDIT1_TIMENOW,str); //获取和显示当前时间

	m_font.CreateFont(50,0,0,0,55,false,false,0,0,0,0,0,0,"Arrial");
	GetDlgItem(IDC_STATE)->SetFont(&m_font);
	SetDlgItemText(IDC_STATE,"欢迎使用!");

	m_link.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_HAND));
	m_link.SetToolTipText("网址:http://www.ctgu.edu.cn");
	
	CString str_time; 
	str_time.Format("Windows已运行了%d小时%d分钟",::GetTickCount()/1000/60/60,::GetTickCount()/1000/60 % 60);
	GetDlgItem(IDC_SYSTIME)->SetWindowText(str_time);

	m_cc.SetCurSel(0);

	DWORD dwFlag;
	if(!InternetGetConnectedState(&dwFlag, 0))
	{
		//MessageBox("网络未连接。");
		SetDlgItemText(IDC_TEXTOUT,"\r\n\r\n\t未连接到网络...");
		m_cc.EnableWindow(false);
		GetDlgItem(IDC_JIAOZHENG)->EnableWindow(false);
	}
	else if(dwFlag & INTERNET_CONNECTION_MODEM)
	{
		SetDlgItemText(IDC_TEXTOUT,"\r\n\r\n\t采用调治解调器上网...");
		//MessageBox( "采用调治解调器上网。");
	}
	else  if(dwFlag & INTERNET_CONNECTION_LAN)
	{
		SetDlgItemText(IDC_TEXTOUT,"\r\n\r\n\t采用网卡通过局域网上网...");
		//MessageBox("采用网卡通过局域网上网。");
	}
	else if(dwFlag & INTERNET_CONNECTION_PROXY)
	{
		SetDlgItemText(IDC_TEXTOUT,"\r\n\r\n\t使用代理服务器上网...");
		//MessageBox("使用代理服务器上网");
	}

	m_ToolTip.Create(this);
	m_ToolTip.SetDelayTime(100);
	m_ToolTip.SetMaxTipWidth(200);
	m_ToolTip.AddTool(GetDlgItem(IDC_COMBO1),"请选择时间服务器");
	m_ToolTip.AddTool(GetDlgItem(IDC_JIAOZHENG),"单击此按钮开始校正时间");
    m_ToolTip.AddTool(GetDlgItem(IDC_SLIDER1),"拖动此滑块可以窗体的透明度,只能用于Win2000/XP,不支持Win9x");

  
	return true;

}

void CPage1::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	BYTE m=(BYTE)m_sld.GetPos();
	HINSTANCE hInst = LoadLibrary("User32.DLL"); 
	if(hInst) 
	{            
		typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);          
		MYFUNC fun = NULL;
		
		fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); //取得SetLayeredWindowAttributes函数指针  
		if(fun)
			fun(AfxGetMainWnd()->GetSafeHwnd(),0,m,2);  
		
		FreeLibrary(hInst); 
	};	

	CString str;
	str.Format("窗体的透明度:%%%d",100 * m / 255);
	SetDlgItemText(IDC_SLD,str);		
	*pResult = 0;

	CString str2;
	str2.Format("%d",m);
	::WritePrivateProfileString("Settings","nTrans",str2,".\\Settings.ini");
	
}

HBRUSH CPage1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
	
	if(pWnd->GetDlgCtrlID()==IDC_STATE)
		pDC->SetTextColor(RGB(0,0,255));

	if(pWnd->GetDlgCtrlID()==IDC_EDIT1_TIMENOW)
		pDC->SetTextColor(RGB(0,128,192));

	if(pWnd->GetDlgCtrlID()==IDC_EDIT2_TIMESET)
		pDC->SetTextColor(RGB(0,128,192));

	if(pWnd->GetDlgCtrlID()==IDC_EDIT3_TIMELEFT)
		pDC->SetTextColor(RGB(0,128,192));

	if (pWnd->GetDlgCtrlID() == IDC_TEXTOUT)
	{
	//	pDC->SetBkColor(RGB(156,174,189));
		pDC->SetTextColor(RGB(0,0,255));
	//	return (HBRUSH)CreateSolidBrush(RGB(156,174,189));
	}	
	
	return hbr;
}




UINT Thread(LPVOID wParam)
{
	//	sndPlaySound("snd.wav", SND_SYNC )	 ;
	PlaySound("IDR_BUTTONSOUND",AfxGetResourceHandle(),SND_RESOURCE|SND_PURGE|SND_NODEFAULT  ); 
	return 0;
}

void CPage1::OnLock()
{
	AfxBeginThread(Thread,this);


	if(((CPageDlg*)GetParent())->GetOSVersion()=="Win2000")
	{
			HINSTANCE hinst=::LoadLibrary("user32.dll");
			typedef BOOL (*FUN)(VOID);
			FUN fun=(FUN)::GetProcAddress(hinst,"LockWorkStation");
			fun();	
			
	}
	else 
	{
		AfxGetMainWnd()->ShowWindow(SW_HIDE);
		CLockDlg d;
		d.DoModal();
	}
	
}

void CPage1::OnHide() 
{
	AfxBeginThread(Thread,this);

    AfxGetMainWnd()->ShowWindow(SW_HIDE);
}





⌨️ 快捷键说明

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