📄 picdlg.cpp
字号:
// PIcDlg.cpp: implementation of the CPIcDlg class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "PIcDlg.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPIcDlg::CPIcDlg()
: m_hWnd(NULL),m_hInstance(NULL)
{
m_Btn1 = NULL;
m_Btn2 = NULL;
m_Btn3 = NULL;
m_Btn4 = NULL;
m_Flag = TRUE;
MEMZERO(m_szFilePath);
MEMZERO(m_bgBitmapFile);
MEMZERO(m_CurrentRunFilePath);
}
CPIcDlg::~CPIcDlg()
{
}
LRESULT CALLBACK CPIcDlg::MainProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
CPIcDlg* pWnd = (CPIcDlg*)GetWindowLong(hWnd, GWL_USERDATA);
if(!pWnd) return NULL;
switch (msg) // Check For Windows Messages
{
case WM_SYSCOMMAND: // Intercept System Commands
pWnd->OnSysCommand(wParam,lParam);
break;
case WM_INITDIALOG:
pWnd->OnInitDialog(wParam,lParam);
break;
case WM_TIMER:
pWnd->OnTimer(wParam,lParam);
break;
case WM_KEYDOWN:
pWnd->OnKeyDown(wParam,lParam);
break;
case WM_KEYUP:
pWnd->OnKeyUp(wParam,lParam);
break;
case WM_MOUSEMOVE:
pWnd->OnMouseMove(wParam,lParam);
break;
case WM_LBUTTONDOWN:
pWnd->OnLButtonDown(wParam,lParam);
break;
case WM_LBUTTONUP:
pWnd->OnLButtonUp(wParam,lParam);
break;
case WM_PAINT:
pWnd->OnPaint();
break;
case WM_FILECHANGEINFO:
pWnd->OnFileChangeInfo(wParam,lParam);
break;
/*
case WM_ERASEBKGND:
// return true;
// pWnd->Erasebkgnd();
break;
*/
case WM_COMMAND:
pWnd->OnCommand(wParam,lParam);
break;
default:
DefWindowProc(hWnd, msg, wParam, lParam);
break;
}
return true;//
}
void CPIcDlg::OnPaint()
{
#if 1
PAINTSTRUCT ps;
TCHAR wzBtnName[MAX_PATH],wzTitleName[MAX_PATH];// wzBtn2Name[MAX_PATH],wzBtn3Name[MAX_PATH],;
RECT rect;
COLORREF Color;
HDC hdc = BeginPaint(m_hWnd,&ps);
{
HBITMAP bmpTemp = ::SHLoadDIBitmap(m_bgBitmapFile);
HDC memDC = CreateCompatibleDC(hdc);
int iWidth = GetSystemMetrics (SM_CXSCREEN);
int iHeight = GetSystemMetrics (SM_CYSCREEN);
HFONT hFont1 = NULL,hFont= NULL;
SetBkMode(memDC , TRANSPARENT);
SelectObject(memDC, bmpTemp);
if(m_Flag)
{
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_MAIN,G_BTN1_NAME_AREA,G_BTN1_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
hFont = CreateShowFont(G_BTN_SECT_MAIN,G_BTN_NAME_FONT);
SelectObject(memDC, hFont);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_MAIN,G_BTN2_NAME_AREA,G_BTN2_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER | DT_CENTER);
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_MAIN,G_BTN3_NAME_AREA,G_BTN3_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
MEMZERO(wzTitleName);
SetBtnNameArea(G_BTN_SECT_MAIN,G_BTN_TLTIE_AREA,G_BTN_TLTIE_NAME,G_BTN_TLTIE_COLOR,&rect,wzTitleName,&Color);
hFont1 = CreateShowFont(G_BTN_SECT_MAIN,G_BTN_NAME_FONT);
SelectObject(memDC, hFont1);
SetTextColor(memDC,Color);
DrawText(memDC,wzTitleName, lstrlen(wzTitleName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
}else
{
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_GAME,G_BTN1_NAME_AREA,G_BTN1_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
hFont = CreateShowFont(G_BTN_SECT_MAIN,G_BTN_NAME_FONT);
SelectObject(memDC, hFont);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_GAME,G_BTN2_NAME_AREA,G_BTN2_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER | DT_CENTER);
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_GAME,G_BTN3_NAME_AREA,G_BTN3_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_GAME,G_BTN5_NAME_AREA,G_BTN5_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
MEMZERO(wzBtnName);
SetBtnNameArea(G_BTN_SECT_GAME,G_BTN6_NAME_AREA,G_BTN6_NAME,G_BTN_NAME_COLO,&rect,wzBtnName,&Color);
SetTextColor(memDC,Color);
DrawText(memDC,wzBtnName, lstrlen(wzBtnName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
MEMZERO(wzTitleName);
SetBtnNameArea(G_BTN_SECT_GAME,G_BTN_TLTIE_AREA,G_BTN_TLTIE_NAME,G_BTN_TLTIE_COLOR,&rect,wzTitleName,&Color);
hFont1 = CreateShowFont(G_BTN_SECT_MAIN,G_BTN_NAME_FONT);
SelectObject(memDC, hFont1);
SetTextColor(memDC,Color);
DrawText(memDC,wzTitleName, lstrlen(wzTitleName), &rect, DT_SINGLELINE|DT_VCENTER |DT_CENTER);
}
BitBlt(hdc,0, 0, iWidth, iHeight, memDC, 0, 0, SRCCOPY);
DeleteDC(memDC);
DeleteObject(hFont);
DeleteObject(hFont1);
DeleteObject(bmpTemp);
}
EndPaint(m_hWnd,&ps);
#endif
}
BOOL CPIcDlg::CreatePicWindow()
{
BOOL fRet = FALSE;
if(!InitWindowInfo())
return fRet;
m_hInstance = GetModuleHandle(NULL);
WNDCLASS wc;
SHCHANGENOTIFYENTRY pshcne;
m_ScreenX = ::GetSystemMetrics(SM_CXSCREEN);
m_ScreenY = ::GetSystemMetrics(SM_CYSCREEN);
wc.style = CS_HREDRAW | CS_VREDRAW ; // Redraw On Move, And Own DC For Window
wc.lpfnWndProc = (WNDPROC) MainProc; // WndProc Handles Messages
wc.cbClsExtra = 0; // No Extra Window Data
wc.cbWndExtra = 0; // No Extra Window Data
wc.hInstance = m_hInstance; // Set The Instance
wc.hIcon = NULL;//LoadIcon(NULL, NUL); // Load The Default Icon
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load The Arrow Pointer
wc.hbrBackground = NULL; // No Background Required For GL
wc.lpszMenuName = NULL; // We Don't Want A Menu
wc.lpszClassName = G_CLASS_NAME; // Set The Class Name
if(!RegisterClass(&wc))
return fRet;
m_hWnd = CreateWindow(G_CLASS_NAME, // Class Name
NULL, // Window Title
/*WS_CLIPSIBLINGS | // Required Window Style
WS_CLIPCHILDREN | // Required Window Style
WS_OVERLAPPEDWINDOW, // Selected Window Style
*/
WS_POPUP |WS_VISIBLE,
0, 0, // Window Position
m_ScreenX, // Calculate Adjusted Window Width
m_ScreenY, // Calculate Adjusted Window Height
NULL, // No Parent Window
NULL, // No Menu
m_hInstance, // Instance
NULL);
if(m_hWnd)
fRet = TRUE;
else
return fRet;
CreateButton();
SetWindowLong(m_hWnd,GWL_USERDATA,(LONG)this);
pshcne.dwEventMask = SHCNE_ALLEVENTS;
pshcne.pszWatchDir = NULL;
pshcne.fRecursive = TRUE;
fRet = SHChangeNotifyRegister(m_hWnd, &pshcne);
if (FALSE == fRet)
{
DWORD dw_error = GetLastError();
return dw_error;
}
//
// ::MoveWindow(m_hWnd,0,m_ScreenY,m_ScreenX,m_ScreenY,FALSE);
// ::SetTimer(m_hWnd,MOVE_WINDOWS_TIMER_EVEN,MOVE_WINDOWS_TIMER_NUM,NULL);
::UpdateWindow(m_hWnd);
::ShowWindow(m_hWnd,SW_SHOW);
return fRet;
}
BOOL CPIcDlg::CreateButton()
{
DestroyBtn();
BOOL fRet = FALSE;
IMGBTNINFO info;
int btnStartX = 0;
int btnStartY = 0;
info.dimID = NULL;
info.upID = m_bgBitmapFile;
TCHAR wzBtnDnAllPath[MAX_PATH];
TCHAR wzBtnUpAllPath[MAX_PATH];
//create btn1
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN1_UP_KEY_MAIN,G_BTN1_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN1_DN_KEY_MAIN,G_BTN1_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn1 = new CECreateButton;
m_Btn1->CreateBtn(m_hWnd,COMMAND_BTN1, m_hInstance,&info,btnStartX,btnStartY);
}
//create btn2
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN2_UP_KEY_MAIN,G_BTN2_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN2_DN_KEY_MAIN,G_BTN2_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn2 = new CECreateButton;
m_Btn2->CreateBtn(m_hWnd,COMMAND_BTN2, m_hInstance,&info,btnStartX,btnStartY);
}
//create btn3
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN3_UP_KEY_MAIN,G_BTN3_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN3_DN_KEY_MAIN,G_BTN3_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn3 = new CECreateButton;
m_Btn3->CreateBtn(m_hWnd,COMMAND_BTN3, m_hInstance,&info,btnStartX,btnStartY);
}
//create btn4
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN4_UP_KEY_MAIN,G_BTN4_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN4_DN_KEY_MAIN,G_BTN4_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn4 = new CECreateButton;
m_Btn4->CreateBtn(m_hWnd,COMMAND_BTN4, m_hInstance,&info,btnStartX,btnStartY);
}
/*
//create btn5
{
MEMZERO(wzBtnAllPath);
GetBtnInfo(G_BTN_SECT_MAIN,G_BTN5_KEY_MAIN,G_BTN5_KEY_AREA,wzBtnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnAllPath;
m_Btn = new CECreateButton;
m_Btn->CreateBtn(m_hWnd,COMMAND_BTN5, m_hInstance,&info,btnStartX,btnStartY);
}
*/
//create game btn1
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_GAME,G_BTN1_UP_KEY_MAIN,G_BTN1_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_GAME,G_BTN1_DN_KEY_MAIN,G_BTN1_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn5 = new CECreateButton;
m_Btn5->CreateBtn(m_hWnd,COMMAND_BTN5, m_hInstance,&info,btnStartX,btnStartY);
m_Btn5->ShowBtn(FALSE);
}
//create game btn2
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_GAME,G_BTN2_UP_KEY_MAIN,G_BTN2_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_GAME,G_BTN2_DN_KEY_MAIN,G_BTN2_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn6 = new CECreateButton;
m_Btn6->CreateBtn(m_hWnd,COMMAND_BTN6, m_hInstance,&info,btnStartX,btnStartY);
m_Btn6->ShowBtn(FALSE);
}
//create game btn3
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_GAME,G_BTN3_UP_KEY_MAIN,G_BTN3_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_GAME,G_BTN3_DN_KEY_MAIN,G_BTN3_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn7 = new CECreateButton;
m_Btn7->CreateBtn(m_hWnd,COMMAND_BTN7, m_hInstance,&info,btnStartX,btnStartY);
m_Btn7->ShowBtn(FALSE);
}
//create game btn4
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_GAME,G_BTN5_UP_KEY_MAIN,G_BTN5_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_GAME,G_BTN5_DN_KEY_MAIN,G_BTN5_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn8 = new CECreateButton;
m_Btn8->CreateBtn(m_hWnd,COMMAND_BTN8, m_hInstance,&info,btnStartX,btnStartY);
m_Btn8->ShowBtn(FALSE);
}
//create game btn5
{
MEMZERO(wzBtnDnAllPath);
MEMZERO(wzBtnUpAllPath);
GetBtnInfo(G_BTN_SECT_GAME,G_BTN6_UP_KEY_MAIN,G_BTN6_KEY_AREA,wzBtnUpAllPath,&btnStartX,&btnStartY);
info.upID = wzBtnUpAllPath;
GetBtnInfo(G_BTN_SECT_GAME,G_BTN6_DN_KEY_MAIN,G_BTN6_KEY_AREA,wzBtnDnAllPath,&btnStartX,&btnStartY);
info.dnID = wzBtnDnAllPath;
m_Btn9 = new CECreateButton;
m_Btn9->CreateBtn(m_hWnd,COMMAND_BTN9, m_hInstance,&info,btnStartX,btnStartY);
m_Btn9->ShowBtn(FALSE);
}
return fRet;
}
BOOL CPIcDlg::InitWindowInfo()
{
BOOL fRet = TRUE;
char szbgBitmap[MAX_PATH];
TCHAR wzbgBitmap[MAX_PATH];
MEMZERO(wzbgBitmap);
MEMZERO(szbgBitmap);
MEMZERO(m_CurrentRunFilePath);
MEMZERO(m_szFilePath);
MEMZERO(m_bgBitmapFile);
CFileHandle FileHandle;
FileHandle.GetRunExePath(m_CurrentRunFilePath);
if(WideCharToMultiByte(CP_ACP,0,m_CurrentRunFilePath,-1,m_szFilePath,wcslen(m_CurrentRunFilePath),0,0))
fRet = TRUE;
strcat(m_szFilePath,FILE_PATH);
FileHandle.GetProfileString(m_szFilePath,G_BG_SECT_MAIN,G_BG_KEY_MAIN,szbgBitmap,"res\\Setup_CopyFile_bg.bmp");
MultiByteToWideChar(CP_ACP, 0, szbgBitmap, -1, wzbgBitmap, strlen(szbgBitmap));
memcpy(m_bgBitmapFile,m_CurrentRunFilePath,sizeof(m_CurrentRunFilePath));
lstrcat(m_bgBitmapFile,wzbgBitmap);
return fRet;
}
void CPIcDlg::Erasebkgnd()
{
#if 0
PAINTSTRUCT ps;
HDC hdc = BeginPaint(m_hWnd,&ps);
{
HBITMAP bmpTemp = ::SHLoadDIBitmap(m_bgBitmapFile);
HDC memDC = CreateCompatibleDC(hdc);
int iWidth = GetSystemMetrics (SM_CXSCREEN);
int iHeight = GetSystemMetrics (SM_CYSCREEN);
SelectObject(memDC, bmpTemp);
BitBlt(hdc,0, 0, iWidth, iHeight, memDC, 0, 0, SRCCOPY);
DeleteDC(memDC);
DeleteObject(bmpTemp);
}
EndPaint(m_hWnd,&ps);
#endif
}
void CPIcDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
switch(wParam)
{
case COMMAND_BTN1:
{
CreateRunProgram(G_BTN_SECT_MAIN,G_EXE1_KEY_MAIN);
}
break;
case COMMAND_BTN2:
{
CreateRunProgram(G_BTN_SECT_MAIN,G_EXE2_KEY_MAIN);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -