home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 July / PCWorld_1999-07_cd.bin / 602 / WBPERSON / data1.cab / SDK_Files / wbwizard / sources / WBMFCSA.CPP < prev    next >
C/C++ Source or Header  |  1999-06-09  |  4KB  |  138 lines

  1. // wbmfcsa.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "resource.h"
  6. #include "wbmfc.h"
  7. #include "wbmfcsa.h"
  8.  
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14.  
  15. BOOL WBSelAppl()
  16. {
  17.     if (!((CWBApp *)AfxGetApp())->LoggedOn())
  18.         return FALSE;
  19.     CSelApplDlg Dlg;
  20.     return Dlg.DoModal() == IDOK;
  21. }
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CSelApplDlg dialog
  24.  
  25.  
  26. CSelApplDlg::CSelApplDlg(CWnd* pParent /*=NULL*/)
  27.     : CDialog(CSelApplDlg::IDD, pParent)
  28. {
  29.     //{{AFX_DATA_INIT(CSelApplDlg)
  30.         // NOTE: the ClassWizard will add member initialization here
  31.     //}}AFX_DATA_INIT
  32. }
  33.  
  34.  
  35. BEGIN_MESSAGE_MAP(CSelApplDlg, CDialog)
  36.     //{{AFX_MSG_MAP(CSelApplDlg)
  37.     ON_NOTIFY(LVN_ITEMCHANGED, IDC_APPLLIST, OnItemchanged)
  38.     ON_NOTIFY(NM_SETFOCUS, IDC_APPLLIST, OnItemchanged)
  39.     ON_EN_CHANGE(IDC_APPLEDIT, OnChange)
  40.     ON_NOTIFY(NM_DBLCLK, IDC_APPLLIST, OnDblclk)
  41.     ON_WM_DESTROY()
  42.     //}}AFX_MSG_MAP
  43. END_MESSAGE_MAP()
  44.  
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CSelApplDlg message handlers
  47.  
  48. BOOL CSelApplDlg::OnInitDialog() 
  49. {
  50.     CDialog::OnInitDialog();
  51.     
  52.     // TODO: Add extra initialization here
  53.     CRect Rect;
  54.     m_ApplList = (CListCtrl *)GetDlgItem(IDC_APPLLIST);
  55.     m_ApplList->GetClientRect(&Rect);
  56.     m_ApplList->InsertColumn(0, NULL, LVCFMT_LEFT, Rect.right);
  57.  
  58.     CBitmap bm;
  59.     bm.LoadBitmap(IDR_SRVRAPPL);
  60.     CImageList *il = new CImageList;
  61.     il->Create(16, 16, ILC_COLOR | ILC_MASK, 1, 0);
  62.     il->Add(&bm, RGB(0, 128, 128)); 
  63.     m_ApplList->SetImageList(il, LVSIL_SMALL);
  64.     bm.DeleteObject();
  65.     
  66.     CWBApp *WBApp = (CWBApp *)AfxGetApp();
  67.     cdp_t   cdp   = WBApp->GetCdp();
  68.     tcursnum Curs;
  69.     if (cd_Open_cursor_direct(cdp, "SELECT OBJ_NAME FROM OBJTAB WHERE CATEGORY=Chr(7)", &Curs))
  70.     {
  71.         Signalize();
  72.         return(FALSE);
  73.     }
  74.     tobjname Appl;
  75.     trecnum  Pos;
  76.     Pos = 0;
  77.     while (!cd_Read_ind(cdp, Curs, Pos++, 1, NOINDEX, Appl))
  78.     {
  79.         small_string(Appl, TRUE);
  80.         m_ApplList->InsertItem
  81.         (
  82.             Pos,
  83.             Appl,
  84.             0
  85.         );
  86.     }
  87.     if (cd_Sz_error(cdp) != OUT_OF_TABLE)
  88.         Signalize();
  89.     Close_cursor(Curs);
  90.  
  91.     return TRUE;  // return TRUE unless you set the focus to a control
  92.                   // EXCEPTION: OCX Property Pages should return FALSE
  93. }
  94.  
  95. void CSelApplDlg::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
  96. {
  97.     NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  98.     // TODO: Add your control notification handler code here
  99.     if (pNMListView->uNewState & LVIS_SELECTED)
  100.         SetDlgItemText(IDC_APPLEDIT, m_ApplList->GetItemText(pNMListView->iItem, 0));
  101.     *pResult = 0;
  102. }
  103.  
  104.  
  105. void CSelApplDlg::OnChange() 
  106. {
  107.     // TODO: Add your control notification handler code here
  108.     GetDlgItem(IDOK)->EnableWindow(GetDlgItem(IDC_APPLEDIT)->GetWindowTextLength());
  109. }
  110.  
  111.  
  112. void CSelApplDlg::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
  113. {
  114.     // TODO: Add your control notification handler code here
  115.     OnOK();
  116.     *pResult = 0;
  117. }
  118.  
  119. void CSelApplDlg::OnOK() 
  120. {
  121.     // TODO: Add extra validation here
  122.     tobjname Appl;
  123.     if (!GetDlgItemText(IDC_APPLEDIT, Appl, sizeof(Appl)))
  124.         return;
  125.     if (!((CWBApp *)AfxGetApp())->SetApplication(Appl))
  126.         return;
  127.     CDialog::OnOK();
  128. }
  129.  
  130. void CSelApplDlg::OnDestroy() 
  131. {
  132.     CDialog::OnDestroy();
  133.     // TODO: Add your message handler code here
  134.     CImageList *il = m_ApplList->GetImageList(LVSIL_SMALL);
  135.     if (il)
  136.         delete il;
  137. }
  138.