Initial
This commit is contained in:
168
tooltip/MAINWND.CPP
Normal file
168
tooltip/MAINWND.CPP
Normal file
@@ -0,0 +1,168 @@
|
||||
#include <common/stdio.hpp>
|
||||
#include <common/rect.hpp>
|
||||
#include <common/purehdc.hpp>
|
||||
#include <common/winmsg.hpp>
|
||||
#include <common/assert.hpp>
|
||||
#include <tooltip/mainwnd.hpp>
|
||||
#include <tooltip/tooltip.hpp>
|
||||
#include <tooltip/toolinfo.hpp>
|
||||
|
||||
char MainWindow::szClassName[]="ToolTip";
|
||||
char MainWindow::szMenuName[]="TOOLTIP";
|
||||
|
||||
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();
|
||||
|
||||
mControlWnd.createControl("BUTTON","",WS_CHILD|WS_VISIBLE|WS_BORDER|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,Rect(10,10,140,20),*this,115); // WS_EX_TRANSPARENT,
|
||||
mControlWnd.show(SW_SHOW);
|
||||
mControlWnd.update();
|
||||
|
||||
Rect clientRect;
|
||||
mControlWnd.clientRect(clientRect);
|
||||
// screenToClient(clientRect);
|
||||
mToolTipControl=new ToolTip(*this,ToolTip::AlwaysTip);
|
||||
mToolTipControl.disposition(PointerDisposition::Delete);
|
||||
PureToolInfo pureToolInfo;
|
||||
pureToolInfo.flags((UINT)PureToolInfo::IDIsHwnd|(UINT)PureToolInfo::SubClass); // |(UINT)PureToolInfo::CenterTip
|
||||
// pureToolInfo.flags((UINT)PureToolInfo::CenterTip);
|
||||
pureToolInfo.hwnd(mControlWnd);
|
||||
pureToolInfo.toolID((UINT)(HWND)mControlWnd);
|
||||
|
||||
// pureToolInfo.hwnd(mControlWnd);
|
||||
// pureToolInfo.hwnd((HWND)mControlWnd);
|
||||
// pureToolInfo.toolID((UINT)(HWND)mControlWnd);
|
||||
|
||||
|
||||
|
||||
// pureToolInfo.rect(Rect());
|
||||
// pureToolInfo.rect(clientRect);
|
||||
// pureToolInfo.rect(Rect(10,10,140,20));
|
||||
pureToolInfo.resInst(processInstance());
|
||||
pureToolInfo.szText("This is an edit control.");
|
||||
mToolTipControl->addTool(pureToolInfo);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
destroy();
|
||||
}
|
||||
|
||||
void MainWindow::insertHandlers(void)
|
||||
{
|
||||
Window::insertHandler(Window::DestroyHandler,&mDestroyHandler);
|
||||
Window::insertHandler(Window::PaintHandler,&mPaintHandler);
|
||||
Window::insertHandler(Window::CommandHandler,&mCommandHandler);
|
||||
Window::insertHandler(Window::SizeHandler,&mSizeHandler);
|
||||
Window::insertHandler(Window::KeyDownHandler,&mKeyDownHandler);
|
||||
Window::insertHandler(Window::CreateHandler,&mCreateHandler);
|
||||
}
|
||||
|
||||
void MainWindow::removeHandlers(void)
|
||||
{
|
||||
Window::removeHandler(Window::DestroyHandler,&mDestroyHandler);
|
||||
Window::removeHandler(Window::PaintHandler,&mPaintHandler);
|
||||
Window::removeHandler(Window::CommandHandler,&mCommandHandler);
|
||||
Window::removeHandler(Window::SizeHandler,&mSizeHandler);
|
||||
Window::removeHandler(Window::KeyDownHandler,&mKeyDownHandler);
|
||||
Window::removeHandler(Window::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*/)
|
||||
{
|
||||
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)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
int MainWindow::hookProc(int code,WPARAM wParam,LPARAM lParam)
|
||||
{
|
||||
if(mToolTipControl.isOkay())
|
||||
{
|
||||
WinMsg winMsg(*((MSG*)lParam));
|
||||
switch(winMsg.message())
|
||||
{
|
||||
case WM_LBUTTONDOWN :
|
||||
break;
|
||||
case WM_LBUTTONUP :
|
||||
break;
|
||||
case WM_MBUTTONDOWN :
|
||||
break;
|
||||
case WM_MBUTTONUP :
|
||||
break;
|
||||
case WM_MOUSEMOVE :
|
||||
// ::SendMessage(mToolTipControl->operator HWND(),WM_MOUSEMOVE,winMsg.wParam(),winMsg.lParam());
|
||||
mToolTipControl->relayEvent(winMsg);
|
||||
break;
|
||||
case WM_RBUTTONDOWN :
|
||||
break;
|
||||
case WM_RBUTTONUP :
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
Reference in New Issue
Block a user