windows-nt/Source/XPSP1/NT/com/oleutest/balls/common/wterm2.cxx
2020-09-26 16:20:57 +08:00

187 lines
4.5 KiB
C++

//+-------------------------------------------------------------------
//
// File: wterm2.cxx
//
// Contents: Shared Windows Procedures
//
// Classes: none
//
// History: 23-Nov-92 Rickhi Created
//
//--------------------------------------------------------------------
#include <pch.cxx>
#pragma hdrstop
extern "C"
{
#include "wterm.h"
#include <memory.h>
#include <stdio.h>
}
// function prototypes
long ProcessMenu(HWND hWindow, UINT uiMessage, WPARAM wParam, LPARAM lParam,
void *);
long ProcessChar(HWND hWindow, UINT uiMessage, WPARAM wParam, LPARAM lParam,
void *);
long ProcessClose(
HWND hWindow,
UINT uiMessage,
WPARAM wParam,
LPARAM lParam,
void *pvCallBackData);
#define IDM_DEBUG 0x100
// global variables.
HWND g_hMain;
#if DBG==1
BOOL g_fDisplay = 1;
#else
BOOL g_fDisplay = 0;
#endif
//+-------------------------------------------------------------------------
//
// Function: Display
//
// Synopsis: prints a message on the window
//
// History: 06-Aug-92 Ricksa Created
//
//--------------------------------------------------------------------------
void Display(TCHAR *pszFmt, ...)
{
// since it takes a long time to display these messages and we dont
// want to skew benchmarks, displaying the messages is optional.
// the messages are usefull for debugging.
if (!g_fDisplay)
return;
va_list marker;
TCHAR szBuffer[256];
va_start(marker, pszFmt);
#ifdef UNICODE
int iLen = vswprintf(szBuffer, pszFmt, marker);
#else
int iLen = vsprintf(szBuffer, pszFmt, marker);
#endif
va_end(marker);
// Display the message on terminal window
SendMessage(g_hMain, WM_PRINT_LINE, iLen, (LONG) szBuffer);
}
//+-------------------------------------------------------------------------
//
// Function: ProcessMenu
//
// Synopsis: Gets called when a WM_COMMAND message received.
//
// Arguments: [hWindow] - handle for the window
// [uiMessage] - message id
// [wParam] - word parameter
// [lParam] - long parameter
//
// Returns: DefWindowProc result
//
// History: 06-Aug-92 Ricksa Created
//
//--------------------------------------------------------------------------
long ProcessMenu(HWND hWindow, UINT uiMessage, WPARAM wParam, LPARAM lParam,
void *)
{
return (DefWindowProc(hWindow, uiMessage, wParam, lParam));
}
//+-------------------------------------------------------------------------
//
// Function: ProcessChar
//
// Synopsis: Gets called when a WM_CHAR message received.
//
// Arguments: [hWindow] - handle for the window
// [uiMessage] - message id
// [wParam] - word parameter
// [lParam] - long parameter
//
// Returns: DefWindowProc result
//
// History: 06-Aug-92 Ricksa Created
//
//--------------------------------------------------------------------------
long ProcessChar(HWND hWindow, UINT uiMessage, WPARAM wParam, LPARAM lParam,
void *)
{
return (DefWindowProc(hWindow, uiMessage, wParam, lParam));
}
//+-------------------------------------------------------------------------
//
// Function: ProcessClose
//
// Synopsis: Gets called when a NC_DESTROY message received.
//
// Arguments: [hWindow] - handle for the window
// [uiMessage] - message id
// [wParam] - word parameter
// [lParam] - long parameter
//
// Returns: DefWindowProc result
//
// History: 06-Aug-92 Ricksa Created
//
//--------------------------------------------------------------------------
long ProcessClose(
HWND hWindow,
UINT uiMessage,
WPARAM wParam,
LPARAM lParam,
void *pvCallBackData)
{
// Take default action with message
return (DefWindowProc(hWindow, uiMessage, wParam, lParam));
}
//+-------------------------------------------------------------------------
//
// Function: MakeTheWindow
//
// Synopsis: Creates the terminal window.
//
// Arguments: [hInstance] -
// [pwszAppName] - app name to display
//
// History: 06-Aug-92 Ricksa Created
//
//--------------------------------------------------------------------------
void MakeTheWindow(HANDLE hInstance, TCHAR *pwszAppName)
{
// Register the window class
TermRegisterClass(hInstance, (LPTSTR) pwszAppName,
(LPTSTR) pwszAppName, (LPTSTR) (1));
// Create the server window
TermCreateWindow(
(LPTSTR) pwszAppName,
(LPTSTR) pwszAppName,
NULL,
ProcessMenu,
ProcessChar,
ProcessClose,
SW_SHOWMINIMIZED,
(HWND *)&g_hMain,
NULL);
// Add debug option to system menu
HMENU hmenu = GetSystemMenu(g_hMain, FALSE);
AppendMenu(hmenu, MF_SEPARATOR, 0, NULL);
AppendMenu(hmenu, MF_STRING | MF_ENABLED, IDM_DEBUG, TEXT("Debug"));
}