You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
4.9 KiB
232 lines
4.9 KiB
/******************************Module*Header*******************************\
|
|
* Module Name: wndstuff.cpp
|
|
*
|
|
* Menu driven test environment.
|
|
*
|
|
* Created: 23 December 1999
|
|
* Author: Adrian Secchia [asecchia]
|
|
*
|
|
* Copyright (c) 1999 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
// for Win95 compile
|
|
#undef UNICODE
|
|
#undef _UNICODE
|
|
|
|
#include <windows.h>
|
|
#include <tchar.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "wndstuff.h"
|
|
|
|
HINSTANCE ghInstance;
|
|
HWND ghwndMain;
|
|
HBRUSH ghbrWhite;
|
|
|
|
AnsiToUnicodeStr(
|
|
const CHAR* ansiStr,
|
|
WCHAR* unicodeStr,
|
|
INT unicodeSize
|
|
)
|
|
{
|
|
return (
|
|
MultiByteToWideChar(
|
|
CP_ACP,
|
|
0,
|
|
ansiStr,
|
|
-1,
|
|
unicodeStr,
|
|
unicodeSize
|
|
) > 0
|
|
);
|
|
}
|
|
|
|
|
|
void OpenFileProc(HWND hwnd)
|
|
{
|
|
|
|
char locFileName[MAX_PATH];
|
|
OPENFILENAME ofn;
|
|
|
|
ZeroMemory(&ofn, sizeof(ofn));
|
|
|
|
ofn.lStructSize = sizeof(ofn);
|
|
ofn.hwndOwner = hwnd;
|
|
ofn.hInstance = ghInstance;
|
|
ofn.lpstrFile = locFileName;
|
|
ofn.nMaxFile = MAX_PATH;
|
|
ofn.lpstrTitle = "Open Image";
|
|
ofn.lpstrInitialDir = ".";
|
|
ofn.Flags = OFN_FILEMUSTEXIST;
|
|
locFileName[0] = '\0';
|
|
|
|
// Present the file/open dialog
|
|
|
|
if(GetOpenFileName(&ofn))
|
|
{
|
|
//AnsiToUnicodeStr(locFileName, FileName, MAX_PATH);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***************************************************************************\
|
|
* lMainWindowProc(hwnd, message, wParam, lParam)
|
|
*
|
|
* Processes all messages for the main window.
|
|
\***************************************************************************/
|
|
|
|
LONG_PTR
|
|
lMainWindowProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
PAINTSTRUCT ps;
|
|
HDC hdc;
|
|
|
|
switch (message)
|
|
{
|
|
|
|
case WM_CREATE:
|
|
break;
|
|
|
|
case WM_SIZE:
|
|
InvalidateRect(hwnd, NULL, FALSE);
|
|
break;
|
|
|
|
case WM_PAINT:
|
|
hdc = BeginPaint(hwnd, &ps);
|
|
PaintWindow(hdc);
|
|
ReleaseDC(hwnd, hdc);
|
|
break;
|
|
|
|
|
|
case WM_COMMAND:
|
|
switch(LOWORD(wParam))
|
|
{
|
|
|
|
case IDM_OPENFILE:
|
|
OpenFileProc(hwnd);
|
|
InvalidateRect(hwnd, NULL, TRUE);
|
|
break;
|
|
|
|
case IDM_QUIT:
|
|
exit(0);
|
|
break;
|
|
|
|
default:
|
|
// The user selected an unimplemented menu item.
|
|
MessageBox(hwnd,
|
|
_T("This is an unimplemented feature."),
|
|
_T(""),
|
|
MB_OK
|
|
);
|
|
break;
|
|
|
|
}
|
|
break;
|
|
|
|
case WM_DESTROY:
|
|
DeleteObject(ghbrWhite);
|
|
PostQuitMessage(0);
|
|
return(DefWindowProc(hwnd, message, wParam, lParam));
|
|
|
|
default:
|
|
return(DefWindowProc(hwnd, message, wParam, lParam));
|
|
}
|
|
|
|
return(0);
|
|
}
|
|
|
|
/***************************************************************************\
|
|
* bInitApp()
|
|
*
|
|
* Initializes the app.
|
|
\***************************************************************************/
|
|
|
|
BOOL bInitApp(VOID)
|
|
{
|
|
WNDCLASS wc;
|
|
|
|
// not quite so white background brush.
|
|
ghbrWhite = CreateSolidBrush(RGB(0xFF,0xFF,0xFF));
|
|
|
|
wc.style = 0;
|
|
wc.lpfnWndProc = lMainWindowProc;
|
|
wc.cbClsExtra = 0;
|
|
wc.cbWndExtra = 0;
|
|
wc.hInstance = ghInstance;
|
|
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
|
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
wc.hbrBackground = ghbrWhite;
|
|
wc.lpszMenuName = _T("MainMenu");
|
|
wc.lpszClassName = _T("TestClass");
|
|
|
|
if(!RegisterClass(&wc)) { return FALSE; }
|
|
|
|
ghwndMain = CreateWindowEx(
|
|
0,
|
|
_T("TestClass"),
|
|
_T("Win32 Test"),
|
|
WS_OVERLAPPED |
|
|
WS_CAPTION |
|
|
WS_BORDER |
|
|
WS_THICKFRAME |
|
|
WS_MAXIMIZEBOX |
|
|
WS_MINIMIZEBOX |
|
|
WS_CLIPCHILDREN |
|
|
WS_VISIBLE |
|
|
WS_SYSMENU,
|
|
80,
|
|
70,
|
|
500,
|
|
500,
|
|
NULL,
|
|
NULL,
|
|
ghInstance,
|
|
NULL
|
|
);
|
|
|
|
if (ghwndMain == NULL)
|
|
{
|
|
return(FALSE);
|
|
}
|
|
SetFocus(ghwndMain);
|
|
return TRUE;
|
|
}
|
|
|
|
/***************************************************************************\
|
|
* main(argc, argv[])
|
|
*
|
|
* Sets up the message loop.
|
|
\***************************************************************************/
|
|
|
|
_cdecl
|
|
main(
|
|
INT argc,
|
|
PCHAR argv[]
|
|
)
|
|
{
|
|
MSG msg;
|
|
HACCEL haccel;
|
|
CHAR* pSrc;
|
|
CHAR* pDst;
|
|
|
|
ghInstance = GetModuleHandle(NULL);
|
|
if(!bInitApp()) { return 0; }
|
|
|
|
while(GetMessage (&msg, NULL, 0, 0))
|
|
{
|
|
if((ghwndMain == 0) || !IsDialogMessage(ghwndMain, &msg)) {
|
|
TranslateMessage(&msg) ;
|
|
DispatchMessage(&msg) ;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|