Initial
This commit is contained in:
200
proto/source/MAINWND.CPP
Normal file
200
proto/source/MAINWND.CPP
Normal file
@@ -0,0 +1,200 @@
|
||||
#include <proto/mainwnd.hpp>
|
||||
#include <proto/display.hpp>
|
||||
#include <proto/proto.hpp>
|
||||
|
||||
char MainWindow::szClassName[]="Tester";
|
||||
char MainWindow::szMenuName[]="mainMenu";
|
||||
|
||||
MainWindow::MainWindow(HINSTANCE hInstance)
|
||||
: mhInstance(hInstance)
|
||||
{
|
||||
mPaintHandler.setCallback(this,&MainWindow::paintHandler);
|
||||
mDestroyHandler.setCallback(this,&MainWindow::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MainWindow::commandHandler);
|
||||
mKeyDownHandler.setCallback(this,&MainWindow::keyDownHandler);
|
||||
mSizeHandler.setCallback(this,&MainWindow::sizeHandler);
|
||||
mCreateHandler.setCallback(this,&MainWindow::createHandler);
|
||||
mTimerHandler.setCallback(this,&MainWindow::timerHandler);
|
||||
mSetFocusHandler.setCallback(this,&MainWindow::setFocusHandler);
|
||||
mCloseHandler.setCallback(this,&MainWindow::closeHandler);
|
||||
insertHandlers();
|
||||
registerClass();
|
||||
::CreateWindow(szClassName,szClassName,
|
||||
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_DLGFRAME|WS_CLIPCHILDREN,
|
||||
CW_USEDEFAULT,CW_USEDEFAULT,
|
||||
InitialWidth,InitialHeight,
|
||||
NULL,NULL,mhInstance,(LPSTR)this);
|
||||
show(SW_SHOW);
|
||||
update();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
destroy();
|
||||
}
|
||||
|
||||
void MainWindow::insertHandlers(void)
|
||||
{
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
insertHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::TimerHandler,&mTimerHandler);
|
||||
insertHandler(VectorHandler::SetFocusHandler,&mSetFocusHandler);
|
||||
}
|
||||
|
||||
void MainWindow::removeHandlers(void)
|
||||
{
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
removeHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::TimerHandler,&mTimerHandler);
|
||||
removeHandler(VectorHandler::SetFocusHandler,&mSetFocusHandler);
|
||||
}
|
||||
|
||||
void MainWindow::registerClass(void)const
|
||||
{
|
||||
WNDCLASS wndClass;
|
||||
|
||||
if(::GetClassInfo(mhInstance,className(),(WNDCLASS FAR*)&wndClass))return;
|
||||
wndClass.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC;
|
||||
wndClass.lpfnWndProc =(WNDPROC)Window::WndProc;
|
||||
wndClass.cbClsExtra =0;
|
||||
wndClass.cbWndExtra =sizeof(MainWindow*);
|
||||
wndClass.hInstance =mhInstance;
|
||||
wndClass.hIcon =::LoadIcon(NULL,IDI_APPLICATION);
|
||||
wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW);
|
||||
wndClass.hbrBackground =(HBRUSH)::GetStockObject(WHITE_BRUSH);
|
||||
wndClass.lpszMenuName =szMenuName;
|
||||
wndClass.lpszClassName =szClassName;
|
||||
::RegisterClass(&wndClass);
|
||||
assert(0!=::GetClassInfo(mhInstance,className(),(WNDCLASS FAR*)&wndClass));
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::createHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mStatusBar=new StatusBarEx(*this,101);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
mControlWnd=::new Control(::CreateWindow("STATIC","TEST",WS_POPUP,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,::GetFocus(),0,::GetModuleHandle(0),0),101);
|
||||
mControlWnd.disposition(PointerDisposition::Delete);
|
||||
mControlWnd->show(SW_SHOW);
|
||||
// mTwain=new Twain();
|
||||
// mTwain.disposition(PointerDisposition::Delete);
|
||||
// setDefWindow((GUIWindow*)this);
|
||||
setDefWindow(&(*mControlWnd));
|
||||
// setDefWindow((GUIWindow*)this);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::sizeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::paintHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
removeHandlers();
|
||||
::PostQuitMessage(0);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wParam())
|
||||
{
|
||||
case SOURCE_SELECT :
|
||||
// userSelectSource();
|
||||
// selectSource();
|
||||
if(!twainAvailable())return message("twain not available",false);
|
||||
if(!openSourceManager())return message("open source failed",false);
|
||||
setShowUI(false);
|
||||
// if(!openSource(1))return message("open default source failed",false);
|
||||
if(!openDefaultSource())return message("open default source failed",false);
|
||||
if(!modalAcquire())return message("modal acquire failed",false);
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::keyDownHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::timerHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainWindow::setFocusHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void MainWindow::dibReceived(HGLOBAL hDib)
|
||||
{
|
||||
BITMAPINFO *pBitmapInfo;
|
||||
BYTE *pBitmapImage;
|
||||
DWORD sizeImageData;
|
||||
|
||||
::OutputDebugString("MainWindow::dibReceived");
|
||||
pBitmapInfo=(BITMAPINFO*)::GlobalLock(hDib);
|
||||
sizeImageData=sizeof(BITMAPINFOHEADER)+(sizeof(RGBQUAD)*pBitmapInfo->bmiHeader.biClrUsed)+(pBitmapInfo->bmiHeader.biWidth*pBitmapInfo->bmiHeader.biHeight);
|
||||
pBitmapImage=::new BYTE[sizeImageData];
|
||||
::memcpy((char*)pBitmapImage,(char*)pBitmapInfo,sizeImageData);
|
||||
::GlobalUnlock(hDib);
|
||||
::GlobalFree(hDib);
|
||||
}
|
||||
|
||||
int MainWindow::negotiateCapabilities(void)
|
||||
{
|
||||
::OutputDebugString("MainWindow::negotiateCapabilities");
|
||||
|
||||
// TW_IMAGEINFO imageInfo;
|
||||
// getImageInfo(imageInfo);
|
||||
|
||||
enableFeeder(false);
|
||||
setXferCount(1);
|
||||
// setCurrentResolution(640,480);
|
||||
// setCurrentUnits(TWUN_PIXELS);
|
||||
// setCurrentPixelType(TWPT_GRAY);
|
||||
// setOrientation(TWOR_PORTRAIT);
|
||||
// setCurrentResolution(100,100);
|
||||
|
||||
// double left(35);
|
||||
// double top(35);
|
||||
// setImageLayout(0,0,1024,768);
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::twainError(TW_ERR error)
|
||||
{
|
||||
::OutputDebugString("MainWindow::twainError");
|
||||
dropToState(SOURCE_MANAGER_OPEN);
|
||||
}
|
||||
|
||||
int MainWindow::message(String message,int retCode)
|
||||
{
|
||||
::MessageBox(*this,message.str(),"Message",MB_OK);
|
||||
return retCode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user