home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
ool.zip
/
OOL
/
source
/
xbookpg.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1997-04-05
|
6KB
|
174 lines
#include "XNoteBk.h"
#include "XBookPg.h"
#include "xcntevnt.h"
#include "xcolor.h"
#include "xexcept.h"
#include "xres.h"
#include "xreslib.h"
#include "xbitmap.h"
MRESULT HandleDefault(XWindow * w, ULONG msg, MPARAM mp1, MPARAM mp2, BOOL & handled);
void BuildChilds(HWND dlgHandle);
MRESULT EXPENTRY bookProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
XNoteBookPage *w = (XNoteBookPage *) WinQueryWindowPtr(hwnd, 0);
if (w)
{
BOOL handeld = FALSE;
MRESULT mr = HandleDefault(w, msg, mp1, mp2, handeld);
if (handeld)
return mr;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
/*@
@class XNoteBookPage
@parent XWindow
@type overview
@symbol _
*/
/*@
@class XNoteBookPage
@type overview
@symbol _
@remarks XNoteBookPage is a page of XNoteBook. You can add one ore more pages to
a notebook. The behaviour of a XNoteBookPage is like any other window so you can use
all functions like DoCommand, DoControl etc.
*/
/*@ XNoteBookPage :: GetBackgroundColor ( XColor * col )
@group colors
@remarks Returns the background color.
@parameters XColor * buffer
*/
void XNoteBookPage::GetBackgroundColor(XColor * col)
{
owner->GetBackgroundColor(col);
}
/*@ XNoteBookPage::XNoteBookPage( const XNoteBook * o, const USHORT style, const USHORT order, const char * title, const XNoteBookPage * insertBehind, const XResource * res)
@group contructors/destructors
@remarks Construct a notebook-page and adds it to a given notebook
@parameters <t '°' c=2>
°XNoteBook * notebook °notebook which gets the page
°USHORT style °style of the page:
<t '°' c=2>
°BP_MAJORTAB °
°BP_MINORTAB °
°BP_PAGEBUTTON °
°BP_STATUSTEXTON °
°BP_MAJOR °
°BP_MINOR °
</t>
(can be or-ed, default is BP_MAJOR|BP_STATUSTEXTON)
°USHORT order °where to insert:
<t '°' c=2>
°BP_LAST °
°BP_FIRST °
°BP_NEXT °
°BP_PREV °
°BP_TOP °
</t>
if BP_LAST or BP_FIRST, insertBehind is ignored (default BP_LAST)
°XNoteBookPage * insertBehind °insert behind this page (default is NULL)
°XResource * resource °It is possibe to load a dialog from the resources to be a bookpage. If you want to do
so give here a XResource which contains the id of the dialog to load and the resourcelibrary
where to load the dialog from. If you have created one or more pages from resources, you
should resize the notebook.
Default is NULL.
</t>
@exceptions If the method fails an exception of the type XException is thrown.
*/
XNoteBookPage :: XNoteBookPage(const XNoteBook * o, const USHORT style, const USHORT order, const char *title, const XNoteBookPage * insertBehind, const XResource * res)
{
if (res)
{
XColor col(COL_PALEGRAY);
SetBackgroundColor(&col);
if ((winhandle = WinLoadDlg(o->GetHandle(), o->GetHandle(), (PFNWP) bookProc, res->GetResourceLibrary()->GetModuleHandle(), res->GetID(), NULL)) == 0)
OOLThrow("error loading notebook-template", -10);
WinSetWindowPtr(winhandle, 0, this);
BuildChilds(winhandle);
}
else
{
if (WinRegisterClass(WinQueryAnchorBlock(o->GetHandle()), (PSZ) "OOL_BOOKPAGE", (PFNWP) userProc, 0, 4) == FALSE)
OOLThrow("error registering notebook-class", -10);
winhandle = WinCreateWindow(o->GetHandle(), (PSZ) "OOL_BOOKPAGE", NULL, 0, 0, 0, 0, 0, o->GetHandle(), HWND_TOP, 0, this, 0);
}
ULONG p = (insertBehind ? insertBehind->id : 0);
owner = (XNoteBook *) o;
id = LONGFROMMR(WinSendMsg(o->GetHandle(), BKM_INSERTPAGE, (MPARAM) p, MPFROM2SHORT(style | BKA_AUTOPAGESIZE, order)));
WinSendMsg(o->GetHandle(), BKM_SETPAGEWINDOWHWND, MPFROMLONG(id), MPFROMHWND(winhandle));
if (title)
SetText(title);
}
/*@ XNoteBookPage :: SetStatusText( const char * t)
@group text functions
@remarks Set the text of the status-line (if the page has one)
@parameters char * text the text to display
*/
void XNoteBookPage::SetStatusText(const char *t) const
{
WinSendMsg(owner->GetHandle(), BKM_SETSTATUSLINETEXT, MPFROMLONG(id), MPFROMP(t));
}
/*@ XNoteBookPage :: SetText( const char * t)
@group text functions
@remarks Set the text of the tab
@parameters char * text the text to display
*/
void XNoteBookPage::SetText(const char *t)
{
WinSendMsg(owner->GetHandle(), BKM_SETTABTEXT, MPFROMLONG(id), MPFROMP(t));
}
/*@ XNoteBookPage :: SetBitmap( const XBitmap * b)
@group text functions
@remarks Set the bitmap of the tab
@parameters XBitmap * bitmap the bitmap to display
*/
void XNoteBookPage::SetBitmap(const XBitmap * b)
{
WinSendMsg(owner->GetHandle(), BKM_SETTABBITMAP, MPFROMLONG(id), MPFROMLONG(b->GetHandle()));
}
/*@ XNoteBookPage :: SetTop( void )
@group misc
@remarks Set the page to the top of the notebook
*/
void XNoteBookPage::SetTop(void) const
{
WinSendMsg(owner->GetHandle(), BKM_TURNTOPAGE, MPFROMLONG(id), 0);
}
/*@ XNoteBookPage :: GetPageCount( void )
@group misc
@remarks Returns the count of minor-pages behind this page up to the next major-page
@returns SHORT numberOfPages
*/
SHORT XNoteBookPage::GetPageCount(void) const
{
return SHORT1FROMMR(WinSendMsg(winhandle, BKM_QUERYPAGECOUNT, (MPARAM) id, (MPARAM) BKA_MAJOR));
}