mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
136 lines
4.7 KiB
C++
136 lines
4.7 KiB
C++
// TabProgram.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "TargetDlg.h"
|
|
#include "TabProgram.h"
|
|
#include "dxwndhost.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
static BOOL dirExists(char *path)
|
|
{
|
|
DWORD ftyp = GetFileAttributesA(path);
|
|
if (ftyp == INVALID_FILE_ATTRIBUTES) return FALSE; //something is wrong with your path!
|
|
if (ftyp & FILE_ATTRIBUTE_DIRECTORY) return TRUE; // this is a directory!
|
|
return false; // this is not a directory!
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTabProgram dialog
|
|
|
|
CTabProgram::CTabProgram(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CTabProgram::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CTabProgram)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
void CTabProgram::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
|
DDX_Radio(pDX, IDC_COORDINATES, cTarget->m_Coordinates);
|
|
DDX_Control(pDX, IDC_FILE, cTarget->m_File);
|
|
DDX_Control(pDX, IDC_LAUNCH, cTarget->m_Launch);
|
|
DDX_Text(pDX, IDC_FILE, cTarget->m_FilePath);
|
|
DDX_Text(pDX, IDC_LAUNCH, cTarget->m_LaunchPath);
|
|
DDX_Text(pDX, IDC_TITLE, cTarget->m_Title);
|
|
DDX_Text(pDX, IDC_MODULE, cTarget->m_Module);
|
|
DDX_Check(pDX, IDC_UNNOTIFY, cTarget->m_UnNotify);
|
|
DDX_Check(pDX, IDC_WINDOWIZE, cTarget->m_Windowize);
|
|
DDX_Check(pDX, IDC_HOTPATCH, cTarget->m_HotPatch);
|
|
DDX_Check(pDX, IDC_HOOKDLLS, cTarget->m_HookDLLs);
|
|
DDX_Check(pDX, IDC_CONFIRMONCLOSE, cTarget->m_ConfirmOnClose);
|
|
DDX_Check(pDX, IDC_TERMINATEONCLOSE, cTarget->m_TerminateOnClose);
|
|
DDX_Check(pDX, IDC_FULLSCREENONLY, cTarget->m_FullScreenOnly);
|
|
DDX_Check(pDX, IDC_HOOKCHILDWIN, cTarget->m_HookChildWin);
|
|
DDX_Check(pDX, IDC_HOOKENABLED, cTarget->m_HookEnabled);
|
|
DDX_Check(pDX, IDC_STARTDEBUG, cTarget->m_StartDebug);
|
|
DDX_Check(pDX, IDC_SAVELOAD, cTarget->m_SaveLoad);
|
|
DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio);
|
|
DDX_Check(pDX, IDC_NOBANNER, cTarget->m_NoBanner);
|
|
DDX_Text(pDX, IDC_POSX, cTarget->m_PosX);
|
|
DDX_Text(pDX, IDC_POSY, cTarget->m_PosY);
|
|
DDX_Text(pDX, IDC_SIZX, cTarget->m_SizX);
|
|
DDX_Text(pDX, IDC_SIZY, cTarget->m_SizY);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CTabProgram, CDialog)
|
|
//{{AFX_MSG_MAP(CTabProgram)
|
|
// NOTE: the ClassWizard will add message map macros here
|
|
ON_BN_CLICKED(IDC_OPEN, OnOpen)
|
|
ON_BN_CLICKED(IDC_OPENLAUNCH, OnOpenLaunch)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTabProgram message handlers
|
|
|
|
extern void GetFolderFromPath(char *);
|
|
|
|
void CTabProgram::OnOpen()
|
|
{
|
|
// TODO: Please add your control notification handler code here
|
|
char path[MAX_PATH];
|
|
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
|
cTarget->m_File.GetWindowText(path, MAX_PATH);
|
|
GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitPath);
|
|
if(!dirExists(path)) strcpy(path, "");
|
|
CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
|
|
"Program (*.exe)|*.exe|All Files (*.*)|*.*||", this);
|
|
if( dlg.DoModal() == IDOK) {
|
|
cTarget->m_File.SetWindowText(dlg.GetPathName());
|
|
if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)){
|
|
strcpy(path, dlg.GetPathName());
|
|
GetFolderFromPath(path);
|
|
WritePrivateProfileString("window", "exepath", path, gInitPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CTabProgram::OnOpenLaunch()
|
|
{
|
|
// TODO: Please add your control notification handler code here
|
|
char path[MAX_PATH];
|
|
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
|
cTarget->m_File.GetWindowText(path, MAX_PATH);
|
|
GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitPath);
|
|
if(!dirExists(path)) strcpy(path, "");
|
|
CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
|
|
"Program (*.exe)|*.exe|All Files (*.*)|*.*||", this);
|
|
if( dlg.DoModal() == IDOK) {
|
|
cTarget->m_Launch.SetWindowText(dlg.GetPathName());
|
|
if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)){
|
|
strcpy(path, dlg.GetPathName());
|
|
GetFolderFromPath(path);
|
|
WritePrivateProfileString("window", "exepath", path, gInitPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
BOOL CTabProgram::OnInitDialog()
|
|
{
|
|
HINSTANCE Hinst;
|
|
HICON Icon, PrevIcon;
|
|
CStatic *IconBox;
|
|
|
|
CDialog::OnInitDialog();
|
|
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
|
Hinst = ::LoadLibrary(cTarget->m_FilePath);
|
|
if(!Hinst) return TRUE;
|
|
Icon = ::ExtractIcon(Hinst, cTarget->m_FilePath, 0);
|
|
IconBox=(CStatic *)this->GetDlgItem(IDC_STATIC_ICON);
|
|
PrevIcon = IconBox->SetIcon(Icon);
|
|
if (IconBox->GetIcon() == NULL)
|
|
IconBox->SetIcon(::LoadIcon(NULL, IDI_ERROR));
|
|
::FreeLibrary(Hinst);
|
|
if(PrevIcon) ::DestroyIcon(PrevIcon);
|
|
return TRUE;
|
|
}
|