1
0
mirror of https://github.com/DxWnd/DxWnd.reloaded synced 2024-12-30 09:25:35 +01:00

v2_04_06_src

Former-commit-id: 91f17dc67c3b955350280809333f442ac6afb059
This commit is contained in:
gho tik 2017-01-17 11:49:27 -05:00 committed by Refael ACkermann
parent 9a53a5014c
commit f260a88bac
19 changed files with 87 additions and 48 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:614dc453abbfbc0659502a136e3cd3b2dbb7e794dc3c964ffd2f53a784c6f429 oid sha256:8448e58dc97c4a242f28a3c94cd1e3837f13fd9cb48d6c3342f84df91fccbbf3
size 779264 size 779264

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:f5c8f132cd8013ecb60b7bd0b0a17727fc0e4ffbc2c17756dcb835897d511427 oid sha256:41137464c3c599b09e720882a36a3e1c939081fa477027447459c269fdb15971
size 671232 size 673280

View File

@ -1453,4 +1453,12 @@ fix?: bypass for WM_FONTCHANGE: avoids "Warhammer: Shadow of the Horned Rat" cra
add: WinG32 debug highlighting of blitted rects on screen add: WinG32 debug highlighting of blitted rects on screen
add: GDI32 debug highlighting of blitted rects on screen add: GDI32 debug highlighting of blitted rects on screen
add: hooks for GDI32 GetTextExtentPointA and GetTextExtentPoint32A: needed for proper string rendering on "Warhammer: Shadow of the Horned Rat" add: hooks for GDI32 GetTextExtentPointA and GetTextExtentPoint32A: needed for proper string rendering on "Warhammer: Shadow of the Horned Rat"
add: hook for GDI32 GdiAlphaBlend, very rare call that appeared in "RHEM" during savegame load. add: hook for GDI32 GdiAlphaBlend, very rare call that appeared in "RHEM" during savegame load.
v2.04.06
GUI:
add: Expert mode
DLL:
fix: corrected condition to print two virtual registry log messages
fix: improved logic to recover surfaces with DDSCAPS_TEXTURE capability - ref. "Dominant Species"
fix: fixed cursor clipping state and toggle key to make it work in all conditions

View File

@ -101,7 +101,7 @@ static int ReplaceVar(char *pData, LPBYTE *lplpData, LPDWORD lpcbData)
} }
// set output vars if not NULL // set output vars if not NULL
iTokenLength = strlen(sTokenValue); iTokenLength = strlen(sTokenValue);
OutTrace("REPLACED token=%d val=\"%s\" len=%d\n", iTokenIndex, sTokenValue, iTokenLength); OutTraceR("REPLACED token=%d val=\"%s\" len=%d\n", iTokenIndex, sTokenValue, iTokenLength);
if(lplpData) { if(lplpData) {
strcpy((char *)*lplpData, sTokenValue); strcpy((char *)*lplpData, sTokenValue);
*lplpData += iTokenLength; *lplpData += iTokenLength;
@ -456,7 +456,7 @@ static LONG myRegOpenKeyEx(
if(RegBuf[0]=='['){ if(RegBuf[0]=='['){
// beware: registry keys are case insensitive. Must use _strnicmp instead of strncmp // beware: registry keys are case insensitive. Must use _strnicmp instead of strncmp
if((!_strnicmp(&RegBuf[1],sKey,strlen(sKey))) && (RegBuf[strlen(sKey)+1]==']')){ if((!_strnicmp(&RegBuf[1],sKey,strlen(sKey))) && (RegBuf[strlen(sKey)+1]==']')){
OutTrace("%s: found fake Key=\"%s\" hkResult=%x\n", label, sKey, phkResult ? *phkResult : 0); OutTraceR("%s: found fake Key=\"%s\" hkResult=%x\n", label, sKey, phkResult ? *phkResult : 0);
fclose(regf); fclose(regf);
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }

View File

@ -715,11 +715,13 @@ static HRESULT BuildGenericEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
res=(*pCreateSurface)(lpdd, &ddsd, lplpdds, pu); res=(*pCreateSurface)(lpdd, &ddsd, lplpdds, pu);
// v2.04.05: error condition found & fixed on certain platforms for "Dominant Species" only (so far). // v2.04.05: error condition found & fixed on certain platforms for "Dominant Species" only (so far).
if ((res == DDERR_UNSUPPORTED) && (ddsd.ddsCaps.dwCaps == (DDSCAPS_SYSTEMMEMORY|DDSCAPS_TEXTURE))){ if (((res == DDERR_UNSUPPORTED) || (res == DDERR_UNSUPPORTEDMODE)) &&
(ddsd.ddsCaps.dwCaps & DDSCAPS_TEXTURE)){
OutTraceDW("BuildGenericEmu: CreateSurface ERROR res=%x(%s) at %d, TEXTURE->OFFSCREENPLAIN retry\n", res, ExplainDDError(res), __LINE__); OutTraceDW("BuildGenericEmu: CreateSurface ERROR res=%x(%s) at %d, TEXTURE->OFFSCREENPLAIN retry\n", res, ExplainDDError(res), __LINE__);
ddsd.ddsCaps.dwCaps = (DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN); ddsd.ddsCaps.dwCaps &= ~(DDSCAPS_TEXTURE|DDSCAPS_ALLOCONLOAD);
ddsd.ddsCaps.dwCaps |= (DDSCAPS_OFFSCREENPLAIN);
res=(*pCreateSurface)(lpdd, &ddsd, lplpdds, pu); res=(*pCreateSurface)(lpdd, &ddsd, lplpdds, pu);
} }
if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && (res!=DD_OK)){ if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && (res!=DD_OK)){
OutTraceDW("BuildGenericEmu: CreateSurface ERROR res=%x(%s) at %d, retry\n", res, ExplainDDError(res), __LINE__); OutTraceDW("BuildGenericEmu: CreateSurface ERROR res=%x(%s) at %d, retry\n", res, ExplainDDError(res), __LINE__);
ddsd.ddsCaps.dwCaps &= ~DDSCAPS_VIDEOMEMORY; ddsd.ddsCaps.dwCaps &= ~DDSCAPS_VIDEOMEMORY;

View File

@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "TlHelp32.h" #include "TlHelp32.h"
#define VERSION "2.04.05" #define VERSION "2.04.06"
#define DDTHREADLOCK 1 #define DDTHREADLOCK 1

Binary file not shown.

View File

@ -1822,48 +1822,48 @@ HRESULT WINAPI extTexInitialize(void *t, LPDIRECT3DDEVICE lpd3dd, LPDIRECTDRAWSU
return (*pTInitialize)(t, lpd3dd, lpdds); return (*pTInitialize)(t, lpd3dd, lpdds);
} }
HRESULT WINAPI extTexGetHandle(TexGetHandle_Type pTGetHandle, void *t, LPDIRECT3DDEVICE lpd3dd, LPD3DTEXTUREHANDLE lpth) static HRESULT WINAPI extTexGetHandle(int version, TexGetHandle_Type pTGetHandle, void *t, LPDIRECT3DDEVICE lpd3dd, LPD3DTEXTUREHANDLE lpth)
{ {
HRESULT ret; HRESULT ret;
OutTrace("Texture::GetHandle lpt=%x lpd3dd=%x lpth=%x\n", t, lpd3dd, lpth); OutTrace("Texture(%d)::GetHandle lpt=%x lpd3dd=%x lpth=%x\n", version, t, lpd3dd, lpth);
ret = (*pTGetHandle)(t, lpd3dd, lpth); ret = (*pTGetHandle)(t, lpd3dd, lpth);
if(ret) OutTraceE("Texture::Load ERROR res=%x(%s)\n", ret, ExplainDDError(ret)); if(ret) OutTraceE("Texture::Load ERROR res=%x(%s)\n", ret, ExplainDDError(ret));
return ret; return ret;
} }
HRESULT WINAPI extTexGetHandle1(void *t, LPDIRECT3DDEVICE lpd3dd, LPD3DTEXTUREHANDLE lpth) HRESULT WINAPI extTexGetHandle1(void *t, LPDIRECT3DDEVICE lpd3dd, LPD3DTEXTUREHANDLE lpth)
{ return extTexGetHandle(pTGetHandle1, t, lpd3dd, lpth); } { return extTexGetHandle(1, pTGetHandle1, t, lpd3dd, lpth); }
HRESULT WINAPI extTexGetHandle2(void *t, LPDIRECT3DDEVICE2 lpd3dd, LPD3DTEXTUREHANDLE lpth) HRESULT WINAPI extTexGetHandle2(void *t, LPDIRECT3DDEVICE2 lpd3dd, LPD3DTEXTUREHANDLE lpth)
{ return extTexGetHandle(pTGetHandle2, t, (LPDIRECT3DDEVICE)lpd3dd, lpth); } { return extTexGetHandle(2, pTGetHandle2, t, (LPDIRECT3DDEVICE)lpd3dd, lpth); }
HRESULT WINAPI extTexPaletteChanged(TexPaletteChanged_Type pTPaletteChanged, void *t, DWORD dw1, DWORD dw2) static HRESULT WINAPI extTexPaletteChanged(int version, TexPaletteChanged_Type pTPaletteChanged, void *t, DWORD dw1, DWORD dw2)
{ {
HRESULT ret; HRESULT ret;
OutTrace("Texture::PaletteChanged lpt=%x dw1=%x dw2=%x\n", t, dw1, dw2); OutTrace("Texture(%d)::PaletteChanged lpt=%x dw1=%x dw2=%x\n", version, t, dw1, dw2);
ret = (*pTPaletteChanged)(t, dw1, dw2); ret = (*pTPaletteChanged)(t, dw1, dw2);
if(ret) OutTraceE("Texture::PaletteChanged ERROR res=%x(%s)\n", ret, ExplainDDError(ret)); if(ret) OutTraceE("Texture::PaletteChanged ERROR res=%x(%s)\n", ret, ExplainDDError(ret));
return ret; return ret;
} }
HRESULT WINAPI extTexPaletteChanged1(void *t, DWORD dw1, DWORD dw2) HRESULT WINAPI extTexPaletteChanged1(void *t, DWORD dw1, DWORD dw2)
{ return extTexPaletteChanged(pTPaletteChanged1, t, dw1, dw2); } { return extTexPaletteChanged(1, pTPaletteChanged1, t, dw1, dw2); }
HRESULT WINAPI extTexPaletteChanged2(void *t, DWORD dw1, DWORD dw2) HRESULT WINAPI extTexPaletteChanged2(void *t, DWORD dw1, DWORD dw2)
{ return extTexPaletteChanged(pTPaletteChanged2, t, dw1, dw2); } { return extTexPaletteChanged(2, pTPaletteChanged2, t, dw1, dw2); }
HRESULT WINAPI extTexLoad(TexLoad_Type pTLoad, void *t, LPDIRECT3DTEXTURE lpt) HRESULT WINAPI extTexLoad(int version, TexLoad_Type pTLoad, void *t, LPDIRECT3DTEXTURE lpt)
{ {
HRESULT ret; HRESULT ret;
OutTrace("Texture::Load lpt=%x lpd3dt=%x\n", t, lpt); OutTrace("Texture(%d)::Load lpt=%x lpd3dt=%x\n", version, t, lpt);
ret = (*pTLoad)(t, lpt); ret = (*pTLoad)(t, lpt);
if(ret) OutTraceE("Texture::Load ERROR res=%x(%s)\n", ret, ExplainDDError(ret)); if(ret) OutTraceE("Texture::Load ERROR res=%x(%s)\n", ret, ExplainDDError(ret));
return ret; return ret;
} }
HRESULT WINAPI extTexLoad1(void *t, LPDIRECT3DTEXTURE lpt) HRESULT WINAPI extTexLoad1(void *t, LPDIRECT3DTEXTURE lpt)
{ return extTexLoad(pTLoad1, t, lpt); } { return extTexLoad(1, pTLoad1, t, lpt); }
HRESULT WINAPI extTexLoad2(void *t, LPDIRECT3DTEXTURE lpt) HRESULT WINAPI extTexLoad2(void *t, LPDIRECT3DTEXTURE lpt)
{ return extTexLoad(pTLoad2, t, lpt); } { return extTexLoad(2, pTLoad2, t, lpt); }
HRESULT WINAPI extTexUnload(void *t) HRESULT WINAPI extTexUnload(void *t)
{ {

View File

@ -467,7 +467,7 @@ BOOL IsIATSequential(HMODULE module)
// skip first string // skip first string
for(; *fname; fname++); for(; !*fname; fname++); for(; *fname; fname++); for(; !*fname; fname++);
// if second string is another DLL it is sequential, otherwise not. // if second string is another DLL it is sequential, otherwise not.
OutTraceB("IsIATSequential: second entry=%s\n", fname); //OutTraceB("IsIATSequential: second entry=%s\n", fname);
return (BOOL)stristr(fname, ".DLL"); return (BOOL)stristr(fname, ".DLL");
} }
__except(EXCEPTION_EXECUTE_HANDLER) __except(EXCEPTION_EXECUTE_HANDLER)

View File

@ -224,7 +224,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
POINT prev, curr; POINT prev, curr;
RECT rect; RECT rect;
static int i=0; static int i=0;
static int ClipCursorToggleState = 1; static int ClipCursorToggleState = 0;
WNDPROC pWindowProc; WNDPROC pWindowProc;
extern void dxwFixWindowPos(char *, HWND, LPARAM); extern void dxwFixWindowPos(char *, HWND, LPARAM);
extern LPRECT lpClipRegion; extern LPRECT lpClipRegion;
@ -236,9 +236,20 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
extern void DDrawScreenShot(int); extern void DDrawScreenShot(int);
if(DoOnce){ if(DoOnce){
RECT cliprect;
BOOL clipret;
DoOnce=FALSE; DoOnce=FALSE;
IsToBeLocked=(dxw.dwFlags1 & LOCKWINPOS); IsToBeLocked=(dxw.dwFlags1 & LOCKWINPOS);
LastTimeShift=SaveTimeShift=dxw.TimeShift; LastTimeShift=SaveTimeShift=dxw.TimeShift;
clipret = (*pGetClipCursor)(&cliprect);
// v2.04.06: you always get a clipper area. To tell that the clipper is NOT active for your window
// you can compare the clipper area with the whole desktop. If they are equivalent, you have no
// clipper (or you are in fullscreen mode, but that is equivalent).
ClipCursorToggleState = TRUE;
if (((cliprect.right - cliprect.left) == (*pGetSystemMetrics)(SM_CXVIRTUALSCREEN)) &&
((cliprect.bottom - cliprect.top) == (*pGetSystemMetrics)(SM_CYVIRTUALSCREEN)))
ClipCursorToggleState = FALSE;
OutTraceDW("Initial clipper status=%x\n", ClipCursorToggleState);
} }
// v2.1.93: adjust clipping region // v2.1.93: adjust clipping region
@ -467,7 +478,10 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
case WM_MBUTTONUP: case WM_MBUTTONUP:
case WM_MBUTTONDBLCLK: case WM_MBUTTONDBLCLK:
if(dxw.Windowize){ if(dxw.Windowize){
if((dxw.dwFlags1 & CLIPCURSOR) && ClipCursorToggleState) dxw.SetClipCursor(); if((dxw.dwFlags1 & CLIPCURSOR) && !ClipCursorToggleState) {
ClipCursorToggleState = TRUE;
dxw.SetClipCursor();
}
if((dxw.dwFlags1 & MODIFYMOUSE) && !(dxw.dwFlags1 & MESSAGEPROC)){ // mouse processing if((dxw.dwFlags1 & MODIFYMOUSE) && !(dxw.dwFlags1 & MESSAGEPROC)){ // mouse processing
// scale mouse coordinates // scale mouse coordinates
prev.x = LOWORD(lparam); prev.x = LOWORD(lparam);
@ -488,7 +502,10 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
break; break;
case WM_SETFOCUS: case WM_SETFOCUS:
OutTraceDW("WindowProc: hwnd=%x GOT FOCUS\n", hwnd); OutTraceDW("WindowProc: hwnd=%x GOT FOCUS\n", hwnd);
if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor(); if(dxw.dwFlags1 & CLIPCURSOR) {
ClipCursorToggleState = TRUE;
dxw.SetClipCursor();
}
if (dxw.dwFlags1 & DISABLECLIPPING) extClipCursor(lpClipRegion); if (dxw.dwFlags1 & DISABLECLIPPING) extClipCursor(lpClipRegion);
break; break;
case WM_KILLFOCUS: case WM_KILLFOCUS:
@ -551,11 +568,9 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
DxWndKey=dxw.MapKeysConfig(message, lparam, wparam); DxWndKey=dxw.MapKeysConfig(message, lparam, wparam);
switch (DxWndKey){ switch (DxWndKey){
case DXVK_CLIPTOGGLE: case DXVK_CLIPTOGGLE:
if(dxw.dwFlags1 & CLIPCURSOR){ OutTraceDW("WindowProc: WM_SYSKEYDOWN key=%x ToggleState=%x\n", wparam, ClipCursorToggleState);
OutTraceDW("WindowProc: WM_SYSKEYDOWN key=%x ToggleState=%x\n",wparam,ClipCursorToggleState); ClipCursorToggleState = !ClipCursorToggleState;
ClipCursorToggleState = !ClipCursorToggleState; ClipCursorToggleState ? dxw.SetClipCursor() : dxw.EraseClipCursor();
ClipCursorToggleState ? dxw.SetClipCursor() : dxw.EraseClipCursor();
}
break; break;
case DXVK_REFRESH: case DXVK_REFRESH:
dxw.ScreenRefresh(); dxw.ScreenRefresh();

View File

@ -80,7 +80,7 @@ IMPLEMENT_DYNAMIC(CGlobalSettings, CDialog)
CGlobalSettings::CGlobalSettings(CWnd* pParent /*=NULL*/) CGlobalSettings::CGlobalSettings(CWnd* pParent /*=NULL*/)
: CDialog(CGlobalSettings::IDD, pParent) : CDialog(CGlobalSettings::IDD, pParent)
{ {
m_DebugMode = GetPrivateProfileInt("window", "debug", 0, gInitPath); //m_DebugMode = GetPrivateProfileInt("window", "debug", 0, gInitPath);
m_AutoHideMode = GetPrivateProfileInt("window", "autohide", 0, gInitPath); m_AutoHideMode = GetPrivateProfileInt("window", "autohide", 0, gInitPath);
m_CheckAdminRights = GetPrivateProfileInt("window", "checkadmin", 0, gInitPath); m_CheckAdminRights = GetPrivateProfileInt("window", "checkadmin", 0, gInitPath);
m_NameFromFolder = GetPrivateProfileInt("window", "namefromfolder", 0, gInitPath); m_NameFromFolder = GetPrivateProfileInt("window", "namefromfolder", 0, gInitPath);
@ -112,7 +112,7 @@ void CGlobalSettings::DoDataExchange(CDataExchange* pDX)
CString sDefaultPosX, sDefaultPosY; CString sDefaultPosX, sDefaultPosY;
sDefaultPosX.Format("%d", m_DefaultPosX); sDefaultPosX.Format("%d", m_DefaultPosX);
sDefaultPosY.Format("%d", m_DefaultPosY); sDefaultPosY.Format("%d", m_DefaultPosY);
DDX_Check(pDX, IDC_CONFIG_DEBUGMODE, m_DebugMode); //DDX_Check(pDX, IDC_CONFIG_DEBUGMODE, m_DebugMode);
DDX_Check(pDX, IDC_CONFIG_AUTOHIDE, m_AutoHideMode); DDX_Check(pDX, IDC_CONFIG_AUTOHIDE, m_AutoHideMode);
DDX_Check(pDX, IDC_CONFIG_CHECKADMIN, m_CheckAdminRights); DDX_Check(pDX, IDC_CONFIG_CHECKADMIN, m_CheckAdminRights);
DDX_Check(pDX, IDC_CONFIG_NAMEFROMFOLDER, m_NameFromFolder); DDX_Check(pDX, IDC_CONFIG_NAMEFROMFOLDER, m_NameFromFolder);
@ -180,8 +180,8 @@ void CGlobalSettings::OnOK()
char val[32]; char val[32];
CDialog::OnOK(); CDialog::OnOK();
// boolean flags // boolean flags
sprintf_s(val, sizeof(val), "%i", m_DebugMode); //sprintf_s(val, sizeof(val), "%i", m_DebugMode);
WritePrivateProfileString("window", "debug", val, gInitPath); //WritePrivateProfileString("window", "debug", val, gInitPath);
sprintf_s(val, sizeof(val), "%i", m_AutoHideMode); sprintf_s(val, sizeof(val), "%i", m_AutoHideMode);
WritePrivateProfileString("window", "autohide", val, gInitPath); WritePrivateProfileString("window", "autohide", val, gInitPath);
sprintf_s(val, sizeof(val), "%i", m_CheckAdminRights); sprintf_s(val, sizeof(val), "%i", m_CheckAdminRights);
@ -244,7 +244,7 @@ void CGlobalSettings::OnOK()
WritePrivateProfileString("keymapping", HKeys[i].sIniLabel, "", gInitPath); WritePrivateProfileString("keymapping", HKeys[i].sIniLabel, "", gInitPath);
} }
//(CDxwndhostView *)(this->GetParent())->UpdateHotKeys(); //(CDxwndhostView *)(this->GetParent())->UpdateHotKeys();
gbDebug = m_DebugMode; //gbDebug = m_DebugMode;
gAutoHideMode = m_AutoHideMode; gAutoHideMode = m_AutoHideMode;
gWarnOnExit = m_WarnOnExit; gWarnOnExit = m_WarnOnExit;
} }

View File

@ -31,7 +31,7 @@ public:
protected: protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
BOOL m_DebugMode; //BOOL m_DebugMode;
BOOL m_UpdatePaths; BOOL m_UpdatePaths;
BOOL m_AutoHideMode; BOOL m_AutoHideMode;
BOOL m_CheckAdminRights; BOOL m_CheckAdminRights;

Binary file not shown.

View File

@ -148,17 +148,6 @@ BOOL CDxwndhostApp::InitInstance()
// standard initialization // standard initialization
// Register the document template.
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CDxwndhostDoc),
RUNTIME_CLASS(CMainFrame), // SDI main frame window
RUNTIME_CLASS(CDxwndhostView));
AddDocTemplate(pDocTemplate);
// DDE file open: Parse command line for standard shell commands and so on. // DDE file open: Parse command line for standard shell commands and so on.
// Parse command line for standard shell commands, DDE, file open // Parse command line for standard shell commands, DDE, file open
// and user-defined flags. The CCommandLine class has been replaced // and user-defined flags. The CCommandLine class has been replaced
@ -174,6 +163,16 @@ BOOL CDxwndhostApp::InitInstance()
if(!gAutoHideMode) gAutoHideMode = GetPrivateProfileInt("window", "autohide", 0, InitPath); // debug flag set from config file if(!gAutoHideMode) gAutoHideMode = GetPrivateProfileInt("window", "autohide", 0, InitPath); // debug flag set from config file
gWarnOnExit = GetPrivateProfileInt("window", "warnonexit", 0, InitPath); // WarnOnExit flag set from config file gWarnOnExit = GetPrivateProfileInt("window", "warnonexit", 0, InitPath); // WarnOnExit flag set from config file
// Register the document template.
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
gbDebug ? IDR_MAINFRAME_EX : IDR_MAINFRAME,
RUNTIME_CLASS(CDxwndhostDoc),
RUNTIME_CLASS(CMainFrame), // SDI main frame window
RUNTIME_CLASS(CDxwndhostView));
AddDocTemplate(pDocTemplate);
if(!LangSelected){ if(!LangSelected){
LANGID LangId; LANGID LangId;
char LangString[20+1]; char LangString[20+1];

Binary file not shown.

Binary file not shown.

View File

@ -129,6 +129,7 @@ BEGIN_MESSAGE_MAP(CDxwndhostView, CListView)
ON_COMMAND(ID_DELETE, OnDelete) ON_COMMAND(ID_DELETE, OnDelete)
ON_COMMAND(ID_FILE_SORTPROGRAMSLIST, OnSort) ON_COMMAND(ID_FILE_SORTPROGRAMSLIST, OnSort)
ON_COMMAND(ID_EDIT_GLOBALSETTINGS, OnGlobalSettings) ON_COMMAND(ID_EDIT_GLOBALSETTINGS, OnGlobalSettings)
ON_COMMAND(ID_OPTIONS_EXPERTMODE, OnExpertModeToggle)
ON_COMMAND(ID_FILE_CLEARALLLOGS, OnClearAllLogs) ON_COMMAND(ID_FILE_CLEARALLLOGS, OnClearAllLogs)
ON_COMMAND(ID_FILE_GOTOTRAYICON, OnGoToTrayIcon) ON_COMMAND(ID_FILE_GOTOTRAYICON, OnGoToTrayIcon)
ON_COMMAND(ID_FILE_SAVE, OnSaveFile) ON_COMMAND(ID_FILE_SAVE, OnSaveFile)
@ -2539,6 +2540,19 @@ void CDxwndhostView::OnGlobalSettings()
pDlg->ShowWindow(SW_SHOW); pDlg->ShowWindow(SW_SHOW);
} }
void CDxwndhostView::OnExpertModeToggle()
{
CMenu *menu;
gbDebug = !gbDebug;
menu = this->GetParent()->GetMenu();
::DestroyMenu(menu->GetSafeHmenu());
menu->LoadMenu(gbDebug ? IDR_MAINFRAME_EX : IDR_MAINFRAME);
this->GetParent()->SetMenu(menu);
menu->CheckMenuItem(ID_OPTIONS_EXPERTMODE, gbDebug ? MF_CHECKED : MF_UNCHECKED);
WritePrivateProfileString("window", "debug", (gbDebug ? "1" : "0"), gInitPath);
}
void CDxwndhostView::OnViewTimeSlider() void CDxwndhostView::OnViewTimeSlider()
{ {
CTimeSliderDialog *pDlg = new CTimeSliderDialog(); CTimeSliderDialog *pDlg = new CTimeSliderDialog();

View File

@ -83,6 +83,7 @@ protected:
afx_msg void OnTaskbarShow(); afx_msg void OnTaskbarShow();
afx_msg void OnSort(); afx_msg void OnSort();
afx_msg void OnGlobalSettings(); afx_msg void OnGlobalSettings();
afx_msg void OnExpertModeToggle();
afx_msg void OnViewLog(); afx_msg void OnViewLog();
afx_msg void OnDeleteLog(); afx_msg void OnDeleteLog();
afx_msg void OnDebugView(); afx_msg void OnDebugView();

Binary file not shown.