Annotation of mstools/samples/sdktools/capview/ranges.cpp, revision 1.1

1.1     ! root        1: #include        <afxwin.h>
        !             2: #include        <afxdlgs.h>
        !             3: #include        <afxcoll.h>
        !             4: 
        !             5: #include "resource.h"
        !             6: #include "ranges.h"
        !             7: 
        !             8: /****************************** SPLIT Range Dialog ********************/
        !             9: 
        !            10: class SplitDlg : public CModalDialog
        !            11: {
        !            12: private:
        !            13:     DWORD       c1;
        !            14:     DWORD       c2;
        !            15:     int         bottom;
        !            16:     int         top;
        !            17:     int         split;
        !            18: public:
        !            19:     SplitDlg(CWnd * pWnd, int bot, int top1, DWORD clr)
        !            20:        : CModalDialog(IDD_SPLIT_DLG, pWnd)
        !            21:     {
        !            22:        split = bottom = bot;
        !            23:        top = top1;
        !            24:        c1 = c2 = clr;
        !            25:        return;
        !            26:     }
        !            27: 
        !            28:     int SplitValue() { return split; }
        !            29:     DWORD Color1() { return c1; }
        !            30:     DWORD Color2() { return c2; }
        !            31:     
        !            32:     BOOL OnInitDialog();
        !            33:     void OnOK();
        !            34:     DECLARE_MESSAGE_MAP()
        !            35: };
        !            36: 
        !            37: BEGIN_MESSAGE_MAP(SplitDlg, CModalDialog)
        !            38: END_MESSAGE_MAP()
        !            39: 
        !            40: BOOL SplitDlg::OnInitDialog()
        !            41: {
        !            42:     SetDlgItemInt(IDD_SPLIT_BOTTOM, bottom);
        !            43:     SetDlgItemInt(IDD_SPLIT_TOP, top);
        !            44:     SetDlgItemInt(IDD_SPLIT_VALUE, bottom);
        !            45:     return TRUE;
        !            46: }
        !            47: 
        !            48: void SplitDlg::OnOK()
        !            49: {
        !            50:     split = GetDlgItemInt(IDD_SPLIT_VALUE);
        !            51:     EndDialog(IDOK);
        !            52: }
        !            53: 
        !            54: /******************************* RangesDlg ************************/
        !            55: 
        !            56: class RangeDlg : public CModalDialog
        !            57: {
        !            58: private:
        !            59:     RANGESTRUCT * prs;
        !            60:     char *        pch[MAX_NUM_RANGES];
        !            61:     int           iCurr;
        !            62:     DWORD         clr;
        !            63:     
        !            64:     void FormatLine(int iLine);
        !            65:        
        !            66: public:
        !            67:     RangeDlg(CWnd * pWnd, RANGESTRUCT * rs)
        !            68:        : CModalDialog("RangeDlg", pWnd)
        !            69:     {
        !            70:        for (int i=0; i<MAX_NUM_RANGES; i++) pch[i] = NULL;
        !            71:        prs = rs;
        !            72:     }
        !            73:     
        !            74:     ~RangeDlg()
        !            75:     {
        !            76:        for (int i=0; i<MAX_NUM_RANGES; i++)
        !            77:        if (pch[i] != NULL) free(pch[i]);
        !            78:     }
        !            79:     
        !            80:     int GetAbove() {
        !            81:        return GetDlgItemInt(ID_RANGE_ABOVE);
        !            82:     }
        !            83:     
        !            84:     void SetAbove(int i) {
        !            85:        SetDlgItemInt(ID_RANGE_ABOVE, i);
        !            86:        return;
        !            87:     }
        !            88:     int GetBelow() {
        !            89:        return GetDlgItemInt(ID_RANGE_BELOW);
        !            90:     }
        !            91:     
        !            92:     void SetBelow(int i) {
        !            93:        SetDlgItemInt(ID_RANGE_BELOW, i);
        !            94:        return;
        !            95:     }
        !            96:     
        !            97:     int GetColor() {
        !            98:        return GetCheckedRadioButton(ID_RANGE_BLACK, ID_RANGE_WHITE)
        !            99:                - ID_RANGE_BLACK;
        !           100:     }
        !           101:     
        !           102:     void SetColor(int i) {
        !           103:        CheckRadioButton(ID_RANGE_BLACK, ID_RANGE_WHITE, 
        !           104:        ID_RANGE_BLACK + i);
        !           105:        return;
        !           106:     }
        !           107:     
        !           108:     BOOL OnInitDialog();
        !           109:     void OnOK();
        !           110: 
        !           111:     afx_msg void OnDrawItem(LPDRAWITEMSTRUCT lpdis);    
        !           112:     afx_msg void OnMeasureItem(LPMEASUREITEMSTRUCT lpmis);
        !           113:     afx_msg void OnColorButton();
        !           114:     afx_msg void OnChangeButton();
        !           115:     afx_msg void OnSplitButton();
        !           116:     afx_msg void OnDeleteButton();
        !           117:     afx_msg void OnHelp();
        !           118:            
        !           119:     DECLARE_MESSAGE_MAP()
        !           120: };
        !           121: BEGIN_MESSAGE_MAP(RangeDlg, CModalDialog)
        !           122:     ON_WM_DRAWITEM()
        !           123:     ON_WM_MEASUREITEM()
        !           124: 
        !           125:     ON_COMMAND(ID_RANGE_ADD, OnSplitButton)
        !           126:     ON_COMMAND(ID_RANGE_CHANGE, OnChangeButton)
        !           127:     ON_COMMAND(ID_RANGE_COLOR, OnColorButton)
        !           128:     ON_COMMAND(ID_RANGE_DELETE, OnDeleteButton)
        !           129:     ON_COMMAND(IDHELP, OnHelp)
        !           130: END_MESSAGE_MAP()
        !           131: 
        !           132: void RangeDlg::FormatLine(int i)
        !           133: {
        !           134:     char rgch[256];
        !           135:     
        !           136:     if (pch[i] != NULL) free(pch[i]);
        !           137:     if (i == 0) {
        !           138:        sprintf(rgch, "Below %d", prs->Above[i+1]);
        !           139:     } else if (i == prs->cRanges-1) {
        !           140:        sprintf(rgch, "Above %d%%", prs->Above[i]);
        !           141:     } else {
        !           142:        sprintf(rgch, "%d%% - %d%%", prs->Above[i], prs->Above[i+1]);
        !           143:     }
        !           144:     pch[i] = strdup(rgch);
        !           145:     return;
        !           146: }
        !           147: 
        !           148: BOOL RangeDlg::OnInitDialog()
        !           149: {
        !           150:     int  i;
        !           151:    
        !           152:     for (i=0; i<prs->cRanges; i++) {
        !           153:        FormatLine(i);
        !           154:        SendDlgItemMessage(ID_RANGE_LISTBOX, LB_ADDSTRING, 0, (LPARAM) pch[i]);
        !           155:     }
        !           156:    
        !           157:    iCurr = 0;
        !           158:    SetAbove(prs->Above[1]);
        !           159:    SetBelow(prs->Above[0]);
        !           160:    SetColor(prs->TextColor[0]);
        !           161:    clr = prs->BackColor[0];
        !           162:    
        !           163:    SendDlgItemMessage(ID_RANGE_PRUNE, BM_SETCHECK, prs->fPrune, 0);
        !           164:    return TRUE;
        !           165: }
        !           166: 
        !           167: void RangeDlg::OnOK()
        !           168: {
        !           169:     prs->fPrune = SendDlgItemMessage(ID_RANGE_PRUNE, BM_GETCHECK, 0, 0);
        !           170:     EndDialog(IDOK);
        !           171: }
        !           172: 
        !           173: int DoRangesDlg(CWnd * pWnd, RANGESTRUCT * rs)
        !           174: {
        !           175:     RangeDlg dlg(pWnd, rs);
        !           176:     return dlg.DoModal();
        !           177: }
        !           178: 
        !           179: 
        !           180: afx_msg void RangeDlg::OnMeasureItem(LPMEASUREITEMSTRUCT lpmis)
        !           181: {
        !           182:     lpmis->itemWidth = 100;
        !           183:     lpmis->itemHeight = 20;
        !           184:     
        !           185:     return;
        !           186: }
        !           187: 
        !           188: afx_msg void RangeDlg::OnDrawItem(LPDRAWITEMSTRUCT lpdis)
        !           189: {
        !           190:     switch( lpdis->itemAction ) {
        !           191:       case ODA_DRAWENTIRE:
        !           192:        if (lpdis->itemID != -1) {
        !           193:            HBRUSH hBr;
        !           194:            hBr = CreateSolidBrush( prs->BackColor[lpdis->itemID] );
        !           195:            FillRect(lpdis->hDC, &lpdis->rcItem, hBr);
        !           196:            DeleteObject( hBr );
        !           197:            SetBkMode(lpdis->hDC, TRANSPARENT);
        !           198:            SetTextColor(lpdis->hDC, prs->TextColor[lpdis->itemID] * RGB(255, 255, 255));
        !           199:            DrawText(lpdis->hDC, (char *) lpdis->itemData, -1, &lpdis->rcItem, 
        !           200:                DT_NOCLIP|DT_EXPANDTABS|DT_VCENTER|DT_SINGLELINE);
        !           201:        }
        !           202:        break;
        !           203:        
        !           204:       case ODA_SELECT:
        !           205:        if (lpdis->itemState & ODS_SELECTED) {
        !           206:            iCurr = lpdis->itemID;
        !           207:            SetAbove(prs->Above[iCurr+1]);
        !           208:            SetBelow(prs->Above[iCurr]);
        !           209:            SetColor(prs->TextColor[iCurr]);
        !           210:            clr = prs->BackColor[iCurr];
        !           211:        } else {
        !           212:        }
        !           213:        break;
        !           214:        
        !           215:       case ODA_FOCUS:
        !           216:        if (lpdis->itemState & ODS_FOCUS) {
        !           217:        } else {
        !           218:        }
        !           219:        break;
        !           220:        
        !           221:       default:
        !           222:        return;
        !           223:     }
        !           224:     return;
        !           225: }
        !           226: 
        !           227: afx_msg void RangeDlg::OnChangeButton()
        !           228: {
        !           229:     if (iCurr > 0) {
        !           230:        prs->Above[iCurr] = GetBelow();
        !           231:     }
        !           232:     
        !           233:     if (iCurr < prs->cRanges) {
        !           234:        prs->Above[iCurr+1] = GetAbove();
        !           235:     }
        !           236:     
        !           237:     prs->TextColor[iCurr] = GetColor();
        !           238:     prs->BackColor[iCurr] = clr;
        !           239:     
        !           240:     SendDlgItemMessage(ID_RANGE_LISTBOX, LB_DELETESTRING, iCurr, 0);
        !           241:     FormatLine(iCurr);
        !           242:     SendDlgItemMessage(ID_RANGE_LISTBOX, LB_INSERTSTRING, iCurr, (LPARAM) pch[iCurr]);
        !           243:     
        !           244:     if (iCurr < prs->cRanges) {
        !           245:        SendDlgItemMessage(ID_RANGE_LISTBOX, LB_DELETESTRING, iCurr+1, 0);
        !           246:        FormatLine(iCurr+1);
        !           247:        SendDlgItemMessage(ID_RANGE_LISTBOX, LB_INSERTSTRING, iCurr+1, (LPARAM) pch[iCurr+1]);
        !           248:     }
        !           249:     
        !           250:     return;
        !           251: }
        !           252: 
        !           253: afx_msg void RangeDlg::OnColorButton()
        !           254: {
        !           255:     CColorDialog dlg(prs->BackColor[iCurr]);
        !           256:     dlg.DoModal();
        !           257:     prs->BackColor[iCurr] = dlg.GetColor();
        !           258:     return;
        !           259: }
        !           260: 
        !           261: afx_msg void RangeDlg::OnSplitButton()
        !           262: {
        !           263:     int i;
        !           264: 
        !           265:     SplitDlg dlg(NULL, prs->Above[iCurr], prs->Above[iCurr+1], prs->BackColor[iCurr]);
        !           266:     if (dlg.DoModal()) {
        !           267:        for (i=prs->cRanges; i>iCurr; i--) {
        !           268:            prs->Above[i] = prs->Above[i-1];
        !           269:            prs->BackColor[i] = prs->BackColor[i-1];
        !           270:            pch[i] = pch[i-1];
        !           271:        }
        !           272:     }
        !           273:     pch[iCurr] = NULL;
        !           274:     prs->cRanges += 1;
        !           275:     prs->Above[iCurr+1] = dlg.SplitValue();
        !           276:     prs->BackColor[iCurr] = dlg.Color1();
        !           277:     prs->BackColor[iCurr+1] = dlg.Color2();
        !           278: 
        !           279:     FormatLine(iCurr);   
        !           280:     SendDlgItemMessage(ID_RANGE_LISTBOX, LB_DELETESTRING, iCurr, 0);
        !           281:     SendDlgItemMessage(ID_RANGE_LISTBOX, LB_INSERTSTRING, iCurr, (LPARAM) pch[iCurr]);
        !           282:     FormatLine(iCurr+1);
        !           283:     SendDlgItemMessage(ID_RANGE_LISTBOX, LB_INSERTSTRING, iCurr+1, (LPARAM) pch[iCurr+1]);
        !           284:     return;
        !           285: }
        !           286: 
        !           287: afx_msg void RangeDlg::OnDeleteButton()
        !           288: {
        !           289:     return;
        !           290: }
        !           291: 
        !           292: 
        !           293: afx_msg void RangeDlg::OnHelp()
        !           294: {
        !           295:     WinHelp(m_hWnd, "capview.hlp", HELP_CONTEXT, (DWORD) IDD_RANGE_DLG);
        !           296:     return;
        !           297: }

unix.superglobalmegacorp.com

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