Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
347
Library/dxx8/samples/Multimedia/Misc/DXinstall/winmain.cpp
Normal file
347
Library/dxx8/samples/Multimedia/Misc/DXinstall/winmain.cpp
Normal file
@@ -0,0 +1,347 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: WinCode.cpp
|
||||
//
|
||||
// Desc: All of the Windows specific code needed for the DSetup sample
|
||||
//
|
||||
// The code in this file includes the main Windows entry point
|
||||
// as well as code to handle messages and our modeless version of
|
||||
// MessageBox().
|
||||
//
|
||||
// Call Tree:
|
||||
// WinMain Main Windows Entry Point
|
||||
// DirectXInstallInit Initializes & registers window class
|
||||
// DirectXInstallWndProc Processes windows messages
|
||||
// DirectXInstall See DINSTALL.CPP
|
||||
// DirectXGetVersion See DINSTALL.CPP
|
||||
// DirectXInstall See DINSTALL.CPP
|
||||
// DlgProc Handles all messages for our modeless MessageBox()
|
||||
// SetButtons Initializes the text of the dialog buttons to mimmic MessageBox()
|
||||
// ShowButton Helper function to get and set the text of a button from resource strings
|
||||
//
|
||||
// Copyright (c) 1998-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#include <windows.h>
|
||||
#include <basetsd.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <dsetup.h>
|
||||
#include "resource.h"
|
||||
#include "DXInstall.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global variables
|
||||
//-----------------------------------------------------------------------------
|
||||
DWORD g_dwStatus = SHOW_ALL; // Filter setting for messages from DirectXSetup
|
||||
HINSTANCE g_hInstance; // Global instance handle
|
||||
HWND g_hDlg = NULL; // Window handle to dialog proc
|
||||
CHAR g_strAppTitle[256]; // Application title
|
||||
INT g_iReply = -1; // Global value for dialog return
|
||||
BOOL g_bCheckOlder = FALSE; // Whether or not to check for older installs
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: ShowButton()
|
||||
// Desc: Helper function to get and set the text of a button from the
|
||||
// resource strings.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID ShowButton( HWND hDlg, int Id, int strid )
|
||||
{
|
||||
HWND btnHwd = GetDlgItem( hDlg, Id );
|
||||
CHAR buf[20];
|
||||
|
||||
LoadString( g_hInstance, strid, buf, 20 );
|
||||
SetWindowText( btnHwd, buf );
|
||||
ShowWindow( btnHwd, SW_NORMAL );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: SetButtons()
|
||||
// Desc: Initializes the text of the dialog buttons to mimmic MessageBox()
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID SetButtons( HWND hDlg, DWORD wMsgType )
|
||||
{
|
||||
LONG dwStyle;
|
||||
|
||||
switch( wMsgType & 0x0000000F )
|
||||
{
|
||||
case MB_OKCANCEL:
|
||||
ShowButton( hDlg, IDBUT1, STR_OK );
|
||||
ShowButton( hDlg, IDBUT2, STR_CANCEL );
|
||||
ShowWindow( GetDlgItem( hDlg, IDBUT3 ), SW_HIDE );
|
||||
break;
|
||||
|
||||
case MB_OK:
|
||||
ShowButton( hDlg, IDBUT3, STR_OK );
|
||||
break;
|
||||
|
||||
case MB_RETRYCANCEL:
|
||||
ShowButton( hDlg, IDBUT1, STR_RETRY );
|
||||
ShowButton( hDlg, IDBUT2, STR_CANCEL );
|
||||
ShowWindow( GetDlgItem( hDlg, IDBUT3 ), SW_HIDE );
|
||||
break;
|
||||
|
||||
case MB_ABORTRETRYIGNORE:
|
||||
ShowButton( hDlg, IDBUT1, STR_ABORT );
|
||||
ShowButton( hDlg, IDBUT3, STR_RETRY );
|
||||
ShowButton( hDlg, IDBUT2, STR_IGNORE );
|
||||
break;
|
||||
|
||||
case MB_YESNOCANCEL:
|
||||
ShowButton( hDlg, IDBUT1, STR_YES );
|
||||
ShowButton( hDlg, IDBUT3, STR_NO );
|
||||
ShowButton( hDlg, IDBUT2, STR_CANCEL );
|
||||
break;
|
||||
|
||||
case MB_YESNO:
|
||||
ShowButton( hDlg, IDBUT1, STR_YES );
|
||||
ShowButton( hDlg, IDBUT2, STR_NO );
|
||||
ShowWindow( GetDlgItem( hDlg, IDBUT3 ), SW_HIDE );
|
||||
break;
|
||||
|
||||
default:
|
||||
ShowWindow( GetDlgItem( hDlg, IDBUT1 ), SW_HIDE );
|
||||
ShowWindow( GetDlgItem( hDlg, IDBUT2 ), SW_HIDE );
|
||||
ShowWindow( GetDlgItem( hDlg, IDBUT3 ), SW_HIDE );
|
||||
break;
|
||||
}
|
||||
|
||||
if( !(wMsgType & MB_DEFBUTTON2) )
|
||||
{
|
||||
dwStyle = GetWindowLong( GetDlgItem( hDlg, IDBUT2 ), GWL_STYLE );
|
||||
SendMessage( GetDlgItem( hDlg, IDBUT2 ), BM_SETSTYLE, dwStyle & ~BS_DEFPUSHBUTTON, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dwStyle = GetWindowLong(GetDlgItem( hDlg, IDBUT2 ), GWL_STYLE);
|
||||
SendMessage( GetDlgItem( hDlg, IDBUT2 ), BM_SETSTYLE, dwStyle | BS_DEFPUSHBUTTON, 0 );
|
||||
}
|
||||
|
||||
if (!(wMsgType & MB_DEFBUTTON3))
|
||||
{
|
||||
dwStyle = GetWindowLong( GetDlgItem( hDlg, IDBUT3 ), GWL_STYLE);
|
||||
SendMessage( GetDlgItem( hDlg, IDBUT3 ), BM_SETSTYLE, dwStyle & ~BS_DEFPUSHBUTTON, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dwStyle = GetWindowLong( GetDlgItem( hDlg, IDBUT3 ), GWL_STYLE);
|
||||
SendMessage( GetDlgItem( hDlg, IDBUT3 ), BM_SETSTYLE, dwStyle | BS_DEFPUSHBUTTON, 0 );
|
||||
}
|
||||
|
||||
if (!(wMsgType & MB_DEFBUTTON3) && !(wMsgType & MB_DEFBUTTON2))
|
||||
{
|
||||
dwStyle = GetWindowLong( GetDlgItem( hDlg, IDBUT1 ), GWL_STYLE);
|
||||
SendMessage( GetDlgItem( hDlg, IDBUT1 ), BM_SETSTYLE, dwStyle | BS_DEFPUSHBUTTON, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dwStyle = GetWindowLong( GetDlgItem( hDlg, IDBUT1 ), GWL_STYLE );
|
||||
SendMessage( GetDlgItem( hDlg, IDBUT1 ), BM_SETSTYLE, dwStyle & ~BS_DEFPUSHBUTTON, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DlgProc()
|
||||
// Desc: Message proc for our modeless version of MessageBox()
|
||||
// This function sets g_wReply for GetReply()
|
||||
//-----------------------------------------------------------------------------
|
||||
DLGPROC DlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
switch( msg )
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
SetButtons( hDlg, -1 );
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch( LOWORD(wParam) )
|
||||
{
|
||||
case IDBUT1:
|
||||
case IDBUT2:
|
||||
case IDBUT3:
|
||||
// Let GetReply() know the user clicked on a button
|
||||
g_iReply = LOWORD(wParam);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_ACTIVATE:
|
||||
if( LOWORD(wParam) == WA_INACTIVE )
|
||||
{
|
||||
if( (HWND)lParam == GetParent( hDlg ) )
|
||||
{
|
||||
SetForegroundWindow( hDlg );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: SetStatusChecks()
|
||||
// Desc: Helper function to set checkmarks by status menu items
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID SetStatusChecks( HWND hWnd )
|
||||
{
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWALL, MF_BYCOMMAND|MF_UNCHECKED );
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWUPGRADES, MF_BYCOMMAND|MF_UNCHECKED );
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWPROBLEMS, MF_BYCOMMAND|MF_UNCHECKED );
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWNOTHING, MF_BYCOMMAND|MF_UNCHECKED );
|
||||
|
||||
switch( g_dwStatus )
|
||||
{
|
||||
case SHOW_ALL:
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWALL, MF_BYCOMMAND|MF_CHECKED );
|
||||
break;
|
||||
case SHOW_UPGRADES:
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWUPGRADES, MF_BYCOMMAND|MF_CHECKED );
|
||||
break;
|
||||
case SHOW_PROBLEMS:
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWPROBLEMS, MF_BYCOMMAND|MF_CHECKED );
|
||||
break;
|
||||
case SHOW_NONE:
|
||||
CheckMenuItem( GetMenu( hWnd ), IDSHOWNOTHING, MF_BYCOMMAND|MF_CHECKED );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DirectXInstallWndProc()
|
||||
// Desc: Processes windows messages
|
||||
//-----------------------------------------------------------------------------
|
||||
INT_PTR CALLBACK DirectXInstallWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
switch( msg )
|
||||
{
|
||||
case WM_COMMAND:
|
||||
// Process menu items
|
||||
switch( LOWORD(wParam) )
|
||||
{
|
||||
case IDINSTALL:
|
||||
DirectXInstall( hWnd );
|
||||
break;
|
||||
case IDGETVERSION:
|
||||
DirectXGetVersion();
|
||||
break;
|
||||
case IDEXIT:
|
||||
DestroyWindow( hWnd );
|
||||
break;
|
||||
case IDSHOWALL:
|
||||
g_dwStatus = SHOW_ALL;
|
||||
SetStatusChecks( hWnd );
|
||||
break;
|
||||
case IDSHOWUPGRADES:
|
||||
g_dwStatus = SHOW_UPGRADES;
|
||||
SetStatusChecks( hWnd );
|
||||
break;
|
||||
case IDSHOWPROBLEMS:
|
||||
g_dwStatus = SHOW_PROBLEMS;
|
||||
SetStatusChecks( hWnd );
|
||||
break;
|
||||
case IDSHOWNOTHING:
|
||||
g_dwStatus = SHOW_NONE;
|
||||
SetStatusChecks( hWnd );
|
||||
break;
|
||||
case IDCHECKOLDERINSTALL:
|
||||
g_bCheckOlder = !g_bCheckOlder;
|
||||
CheckMenuItem( GetMenu(hWnd), IDCHECKOLDERINSTALL,
|
||||
MF_BYCOMMAND|MF_CHECKED );
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage( 0 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DefWindowProc( hWnd, msg, wParam, lParam );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DirectXInstallInit()
|
||||
// Desc: Initializes window data and registers window class
|
||||
// Sets up a structure to register the window class. Structure includes
|
||||
// such information as what function will process messages, what cursor
|
||||
// and icon to use, etc.
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL DirectXInstallInit( HINSTANCE hInstance )
|
||||
{
|
||||
WNDCLASS wndClass; // structure pointer
|
||||
ZeroMemory( &wndClass, sizeof(WNDCLASS) );
|
||||
wndClass.style = CS_GLOBALCLASS;
|
||||
wndClass.lpfnWndProc = (WNDPROC) DirectXInstallWndProc;
|
||||
wndClass.hInstance = hInstance;
|
||||
wndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN_ICON));
|
||||
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
|
||||
wndClass.lpszMenuName = "MainMenu";
|
||||
wndClass.lpszClassName = (LPSTR) "DirectXInstall";
|
||||
|
||||
// Returns result of registering the window
|
||||
return RegisterClass( &wndClass );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: WinMain()
|
||||
// Desc: Calls initialization function, processes message loop
|
||||
// This will initialize the window class if it is the first time this
|
||||
// application is run. It then creates the window, and processes the
|
||||
// message loop until a PostQuitMessage is received. It exits the
|
||||
// application by returning the value passed by the PostQuitMessage.
|
||||
//-----------------------------------------------------------------------------
|
||||
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
||||
LPSTR strCmdLine, int nCmdShow )
|
||||
{
|
||||
// Has application been initialized?
|
||||
if( NULL == hPrevInstance )
|
||||
if( 0 == DirectXInstallInit( hInstance ) )
|
||||
return 0;
|
||||
|
||||
g_hInstance = hInstance;
|
||||
|
||||
HWND hWnd = CreateWindow( "DirectXInstall", "DirectX Install",
|
||||
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
NULL, NULL, g_hInstance, NULL );
|
||||
if( NULL == hWnd )
|
||||
return 0;
|
||||
|
||||
LoadString( g_hInstance, STR_TITLE, g_strAppTitle, 200 );
|
||||
ShowWindow( hWnd, SW_NORMAL );
|
||||
UpdateWindow( hWnd ); // Send a WM_PAINT message
|
||||
SetStatusChecks( hWnd ); // Check the default message menu item
|
||||
|
||||
MSG msg;
|
||||
while( GetMessage( &msg, NULL, 0, 0 ) )
|
||||
{
|
||||
TranslateMessage( &msg );
|
||||
DispatchMessage( &msg );
|
||||
}
|
||||
|
||||
// Returns the value from PostQuitMessage
|
||||
return (int)msg.wParam;
|
||||
}
|
||||
Reference in New Issue
Block a user