<<[H]TListBox [[TListBox]] ##{hheader.snp} #include #pragma hdrstop ##<>[H]TListBox [[TListBox]] <<[CPP]TListBox [[TListBox]] ##{cheader.snp} #include #pragma hdrstop ##< //{{[[TListBox]] Implementation}} ##--BEGIN-- @OPT_APPL_PRINTING ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE // // Build a response table for all messages/commands handled // by [[TListBox]] derived from TListBox. // ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE DEFINE_RESPONSE_TABLE1([[TListBox]], TListBox) //{{[[TListBox]]RSP_TBL_BEGIN}} ##:DBResponse(\\"[[TListBox]]", "", "", "WM_GETMINMAXINFO", "") EV_WM_GETMINMAXINFO, //{{[[TListBox]]RSP_TBL_END}} END_RESPONSE_TABLE; ##--END-- @OPT_APPL_PRINTING ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE ////////////////////////////////////////////////////////// // [[TListBox]] // ========== // Construction/Destruction handling. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE [[TListBox]]::[[TListBox]] (TWindow* parent, int id, int x, int y, int w, int h, TModule* module) : TListBox(parent, id, x, y, w, h, module) { Attr.Style &= ~LBS_SORT; // Don't sort the list its a file. ##QUERY_WIND_STYLE [[StyleAttributes]] ##StyleAttributes != "" 3 // Override the default window style for TListBox. [[StyleAttributes]] ##QUERY_WIND_BACKGRND [[BackgroundColor]] ##BackgroundColor != "" 3 // Change the window's background color SetBkgndColor([[BackgroundColor]]); // INSERT>> Your constructor code here. } [[TListBox]]::~[[TListBox]] () { Destroy(); // INSERT>> Your destructor code here. } ##--BEGIN-- @OPT_APPL_PRINTING == TRUE ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE // // Paint routine for Window, Printer, and PrintPreview for a TListBox client. // ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE void [[TListBox]]::Paint (TDC& dc, bool, TRect& rect) { ##<Printing && theApp->Printer && !rect.IsEmpty()) { ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2 // Use pageSize to get the size of the window to render into. For a Window it's the client area, // for a printer it's the printer DC dimensions and for print preview it's the layout window. TSize pageSize(rect.right - rect.left, rect.bottom - rect.top); HFONT hFont = (HFONT)GetWindowFont(); TFont font("Arial", -12); if (hFont == 0) dc.SelectObject(font); else dc.SelectObject(TFont(hFont)); TEXTMETRIC tm; int fHeight = (dc.GetTextMetrics(tm) == true) ? tm.tmHeight + tm.tmExternalLeading : 10; ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // How many lines of this font can we fit on a page. int linesPerPage = MulDiv(pageSize.cy, 1, fHeight); if (linesPerPage) { TPrintDialog::TData &printerData = theApp->Printer->GetSetup(); int maxPg = ((GetCount() / linesPerPage) + 1.0); ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // Compute the number of pages to print. printerData.MinPage = 1; printerData.MaxPage = maxPg; ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // Do the text stuff: int fromPage = printerData.FromPage == -1 ? 1 : printerData.FromPage; int toPage = printerData.ToPage == -1 ? 1 : printerData.ToPage; char buffer[255]; int currentPage = fromPage; while (currentPage <= toPage) { int startLine = (currentPage - 1) * linesPerPage; int lineIdx = 0; while (lineIdx < linesPerPage) { ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // If the string is no longer valid then there's nothing more to display. if (GetString(buffer, startLine + lineIdx) < 0) break; dc.TabbedTextOut(TPoint(0, lineIdx * fHeight), buffer, strlen(buffer), 0, NULL, 0); lineIdx++; } currentPage++; } } } } } void [[TListBox]]::EvGetMinMaxInfo (MINMAXINFO far& minmaxinfo) { ##<Printing) { minmaxinfo.ptMaxSize = TPoint(32000, 32000); minmaxinfo.ptMaxTrackSize = TPoint(32000, 32000); return; } } TListBox::EvGetMinMaxInfo(minmaxinfo); } ##--END-- @OPT_APPL_PRINTING == TRUE >>[CPP]TListBox [[TListBox]]