Annotation of mstools/mfc/samples/minsvr/minitem.cpp, revision 1.1.1.1

1.1       root        1: // This is a part of the Microsoft Foundation Classes C++ library.
                      2: // Copyright (C) 1992 Microsoft Corporation
                      3: // All rights reserved.
                      4: //
                      5: // This source code is only intended as a supplement to the
                      6: // Microsoft Foundation Classes Reference and Microsoft
                      7: // QuickHelp documentation provided with the library.
                      8: // See these sources for detailed information regarding the
                      9: // Microsoft Foundation Classes product.
                     10: 
                     11: #include "minsvr.h"
                     12: 
                     13: /////////////////////////////////////////////////////////////////////////////
                     14: 
                     15: CMinItem::CMinItem()
                     16: {
                     17:        m_data = "example string";
                     18: }
                     19: 
                     20: void CMinItem::Serialize(CArchive& ar)
                     21: {
                     22:        // Customize this to store real data
                     23:        if (ar.IsStoring())
                     24:        {
                     25:                ar << m_data;
                     26:        }
                     27:        else
                     28:        {
                     29:                ar >> m_data;
                     30:        }
                     31: }
                     32: 
                     33: 
                     34: OLESTATUS CMinItem::OnShow(BOOL /* bTakeFocus */)
                     35: {
                     36:        // make sure server is the topmost window
                     37:        AfxGetApp()->m_pMainWnd->BringWindowToTop();
                     38:        return OLE_OK;
                     39: }
                     40: 
                     41: 
                     42: BOOL CMinItem::OnGetTextData(CString& rStringReturn)
                     43: {
                     44:        rStringReturn = m_data;
                     45:        return TRUE;
                     46: }
                     47: 
                     48: /////////////////////////////////////////////////////////////////////////////
                     49: // Simple dialog for changing the string
                     50: 
                     51: class CChangeDlg : public CModalDialog
                     52: {
                     53: protected:
                     54:        CString&    m_rString;
                     55: 
                     56: public:
                     57:        CChangeDlg(CString& rString)
                     58:                : CModalDialog("ChangeDlg"), m_rString(rString)
                     59:                        { }
                     60: 
                     61:        BOOL OnInitDialog();
                     62:        void OnOK();
                     63: };
                     64: 
                     65: BOOL CChangeDlg::OnInitDialog()
                     66: {
                     67:        GetDlgItem(IDC_EDIT1)->SetWindowText(m_rString);
                     68:        return TRUE;
                     69: };
                     70: 
                     71: void CChangeDlg::OnOK()
                     72: {
                     73:        GetDlgItem(IDC_EDIT1)->GetWindowText(m_rString);
                     74:        EndDialog(IDOK);
                     75: }
                     76: 
                     77: 
                     78: BOOL CMinItem::PromptChangeString()
                     79: {
                     80:        CChangeDlg dlg(m_data);
                     81:        return (dlg.DoModal() == IDOK);
                     82: }
                     83: 
                     84: /////////////////////////////////////////////////////////////////////////////
                     85: // Drawing items into bitmap or metafile
                     86: 
                     87: BOOL CMinItem::OnDraw(CMetaFileDC* pDC)
                     88: {
                     89:        ASSERT_VALID(pDC);
                     90:        CSize textSize;
                     91: 
                     92:        // first calculate the text size in MM_TEXT units
                     93:        {
                     94:                CWindowDC screenDC(NULL);
                     95:                textSize = screenDC.GetTextExtent(m_data, m_data.GetLength());
                     96:        }
                     97: 
                     98:        // if you want the item to always be drawn in a specific mapping
                     99:        //  mode set it here.
                    100: 
                    101:        // Otherwise the OLE DLLs will scale the metafile to fit the
                    102:        //  client specified size.  Setting the viewport size/extent
                    103:        //  determines the relative scale of everything.
                    104: 
                    105:        int cx = textSize.cx + 100;
                    106:        int cy = (cx * 4) / 3;      // nice aspect ratio
                    107:        TRACE("Item drawing size is %d x %d\n", cx, cy);
                    108:        pDC->SetWindowExt(cx, cy);
                    109: 
                    110:        // Draw a shaded circle
                    111:        pDC->SelectStockObject(LTGRAY_BRUSH);
                    112:        pDC->Ellipse(0, 0, cx, cy);
                    113: 
                    114:        // draw the text in the middle (as best we can)
                    115:        pDC->SetBkMode(TRANSPARENT);
                    116:        pDC->TextOut((cx - textSize.cx) / 2, (cy - textSize.cy) / 2, m_data);
                    117: 
                    118:        return TRUE;
                    119: }
                    120: 
                    121: /////////////////////////////////////////////////////////////////////////////

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.