📄 winmain.cpp
字号:
//
// %%name
// Windows Platform Initializer
//
// $Revision: 1.1 $
// $Source: D:/DENG/PRG/MWINDOWS/WIN/LIB/rcs/winmain.cpp $
// $Date: 1993/10/18 12:32:29 $
//
extern "C" {
#include <windows.h>
}
// #include "wincntlr.h"
#include "global.h"
#include "lowgdiw.h"
#define TIMER_ID 1000
HINSTANCE pfHandle;
HWND pfWindow;
BOOL _winTimerOn = FALSE;
BYTE _winMouseButton = 0;
int _winMouseX = 0, _winMouseY = 0;
int _winScrWidth = 0, _winScrHeight = 0;
HDC _winDC;
BOOL _winUsingDC = FALSE;
BOOL _winRepaintCycle = FALSE;
int mwmain (); // our application set here
BOOL InitPfClass (HANDLE prev);
HWND CreatePfWindow ();
LRESULT CALLBACK PfProc (HWND wh, unsigned msg, WPARAM wParam, LPARAM lParam);
int PASCAL WinMain (HINSTANCE instHandle, HINSTANCE prevInstHandle,
LPSTR commandLine, int showCommand)
{
pfHandle = instHandle;
if ((InitPfClass (prevInstHandle)) == FALSE) return (0);
if (!(pfWindow = CreatePfWindow())) return (0);
SetTimer (pfWindow, TIMER_ID, 50, NULL);
ShowWindow (pfWindow, showCommand);
UpdateWindow (pfWindow);
mwmain ();
KillTimer (pfWindow, TIMER_ID);
return (1);
}
// ----------------------------------------------------------------------------
BOOL InitPfClass (HANDLE prev)
{
WNDCLASS windowClass;
if (prev)
{
MessageBox (NULL,
"Micro Windows Platform for MS-Windows already loaded",
"CAUTION", MB_OK | MB_ICONHAND);
return (FALSE);
}
windowClass.style = CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc = PfProc;
windowClass.cbClsExtra = 0;
windowClass.cbWndExtra = 0;
windowClass.hInstance = pfHandle;
windowClass.hCursor = LoadCursor (NULL, IDC_ARROW);
windowClass.hIcon = NULL;
windowClass.hbrBackground = CreateSolidBrush(RGB(192, 192, 192));
windowClass.lpszMenuName = NULL;
windowClass.lpszClassName = "MicroWindows";
if (!RegisterClass (&windowClass)) return (FALSE);
return (TRUE);
}
// ----------------------------------------------------------------------------
HWND CreatePfWindow ()
{
RECT r;
GetWindowRect (GetDesktopWindow(), &r);
r.right=680;
r.bottom=520;
_winScrWidth = r.right + 1;
_winScrHeight = r.bottom + 1;
return (CreateWindow ("MicroWindows", "MicroWindows on Win32",
// WS_POPUP,
WS_BORDER | WS_CAPTION | WS_CAPTION | WS_SYSMENU,
0, 0, r.right, r.bottom,
NULL, NULL, pfHandle, NULL));
}
// ----------------------------------------------------------------------------
void _winGetDC ()
{
if (_winUsingDC || _winRepaintCycle) return;
_winDC = GetDC (pfWindow);
_winUsingDC = TRUE;
}
void _winReleaseDC ()
{
if (!_winUsingDC || _winRepaintCycle) return;
ReleaseDC (pfWindow, _winDC);
_winUsingDC = FALSE;
}
LRESULT CALLBACK PfProc (HWND wh, unsigned msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_MOUSEMOVE:
if (_winMouseButton != LGM_BUTTONUP) _winMouseButton = LGM_MOVE;
if (wParam == MK_LBUTTON) _winMouseButton = LGM_DRAG;
_winMouseX = LOWORD (lParam);
_winMouseY = HIWORD (lParam);
break;
case WM_LBUTTONUP:
_winMouseButton = LGM_BUTTONUP;
_winMouseX = LOWORD (lParam);
_winMouseY = HIWORD (lParam);
break;
case WM_LBUTTONDOWN:
if (_winMouseButton != LGM_BUTTONUP)
_winMouseButton = LGM_BUTTONDOWN;
_winMouseX = LOWORD (lParam);
_winMouseY = HIWORD (lParam);
break;
case WM_PAINT:
_winRepaintCycle = TRUE;
_winUsingDC = TRUE;
PAINTSTRUCT ps;
_winDC = BeginPaint (wh, &ps);
if (desktop)
{
desktop->draw (&Rect (ps.rcPaint.left, ps.rcPaint.top,
ps.rcPaint.right, ps.rcPaint.bottom));
}
// PAINT PROCEDURE !!!!!!
EndPaint (wh, &ps);
_winUsingDC = FALSE;
_winRepaintCycle = FALSE;
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
case WM_TIMER:
_winTimerOn = TRUE;
break;
default:
return (DefWindowProc (wh, msg, wParam, lParam));
}
return (0L);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -