Files
Work/hookproc/MAINWND.CPP
2024-08-07 09:16:27 -04:00

118 lines
3.6 KiB
C++

#include <common/stdio.hpp>
#include <common/rect.hpp>
#include <common/purehdc.hpp>
#include <hookproc/mainwnd.hpp>
char MainWindow::szClassName[]="PROTO";
char MainWindow::szMenuName[]="";
MainWindow::MainWindow(void)
: mPaintHandler(this,&MainWindow::paintHandler),
mDestroyHandler(this,&MainWindow::destroyHandler),
mCommandHandler(this,&MainWindow::commandHandler),
mKeyDownHandler(this,&MainWindow::keyDownHandler),
mSizeHandler(this,&MainWindow::sizeHandler),
mCreateHandler(this,&MainWindow::createHandler)
{
insertHandlers();
registerClass();
::CreateWindow(szClassName,szClassName,
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_SIZEBOX|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_DLGFRAME|WS_CLIPCHILDREN,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,processInstance(),(LPSTR)this);
show(SW_SHOW);
update();
}
MainWindow::~MainWindow()
{
destroy();
}
void MainWindow::insertHandlers(void)
{
Window::insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
Window::insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
Window::insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
Window::insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
Window::insertHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler);
Window::insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
}
void MainWindow::removeHandlers(void)
{
Window::removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
Window::removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
Window::removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
Window::removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
Window::removeHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler);
Window::removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
}
void MainWindow::registerClass(void)const
{
HINSTANCE hInstance(processInstance());
WNDCLASS wndClass;
if(::GetClassInfo(hInstance,className(),(WNDCLASS FAR*)&wndClass))return;
wndClass.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
wndClass.lpfnWndProc =(WNDPROC)Window::WndProc;
wndClass.cbClsExtra =0;
wndClass.cbWndExtra =sizeof(MainWindow*);
wndClass.hInstance =hInstance;
wndClass.hIcon =::LoadIcon(NULL,IDI_APPLICATION);
wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW);
wndClass.hbrBackground =(HBRUSH)::GetStockObject(LTGRAY_BRUSH);
wndClass.lpszMenuName =szMenuName;
wndClass.lpszClassName =szClassName;
::RegisterClass(&wndClass);
assert(0!=::GetClassInfo(hInstance,className(),(WNDCLASS FAR*)&wndClass));
}
CallbackData::ReturnType MainWindow::createHandler(CallbackData &/*someCallbackData*/)
{
createControls();
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::destroyHandler(CallbackData &/*someCallbackData*/)
{
removeHandlers();
::PostQuitMessage(0);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::sizeHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::commandHandler(CallbackData &someCallbackData)
{
switch(someCallbackData.wParam())
{
default :
break;
}
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::keyDownHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::paintHandler(CallbackData &someCallbackData)
{
PaintInformation &paintInfo=*((PaintInformation*)someCallbackData.lParam());
Rect frameRect(30,30,100,100);
::DrawFocusRect((PureDevice&)paintInfo,&((RECT&)frameRect));
return (CallbackData::ReturnType)FALSE;
}
void MainWindow::createControls(void)
{
}