📄 page1.cpp
字号:
// 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 + -