home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 July / PCWorld_1999-07_cd.bin / 602 / WBPERSON / data1.cab / SDK_Files / C-lang / MFC / WBMFCSA.CPP < prev    next >
C/C++ Source or Header  |  1999-06-09  |  4KB  |  143 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(char *SelAppl)
  16. {
  17.     if (!((CWBApp *)AfxGetApp())->LoggedOn())
  18.         return FALSE;
  19.     CSelApplDlg Dlg(SelAppl);
  20.     return Dlg.DoModal() == IDOK;
  21. }
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CSelApplDlg dialog
  24.  
  25.  
  26. CSelApplDlg::CSelApplDlg(char * SelAppl, 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.     m_SelAppl = SelAppl;
  33.     if (SelAppl)
  34.         *SelAppl = 0;
  35. }
  36.  
  37.  
  38. BEGIN_MESSAGE_MAP(CSelApplDlg, CDialog)
  39.     //{{AFX_MSG_MAP(CSelApplDlg)
  40.     ON_NOTIFY(LVN_ITEMCHANGED, IDC_APPLLIST, OnItemchanged)
  41.     ON_NOTIFY(NM_SETFOCUS, IDC_APPLLIST, OnItemchanged)
  42.     ON_EN_CHANGE(IDC_APPLEDIT, OnChange)
  43.     ON_NOTIFY(NM_DBLCLK, IDC_APPLLIST, OnDblclk)
  44.     ON_WM_DESTROY()
  45.     //}}AFX_MSG_MAP
  46. END_MESSAGE_MAP()
  47.  
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CSelApplDlg message handlers
  50.  
  51. BOOL CSelApplDlg::OnInitDialog() 
  52. {
  53.     CDialog::OnInitDialog();
  54.     
  55.     // TODO: Add extra initialization here
  56.     CRect Rect;
  57.     m_ApplList = (CListCtrl *)GetDlgItem(IDC_APPLLIST);
  58.     m_ApplList->GetClientRect(&Rect);
  59.     m_ApplList->InsertColumn(0, NULL, LVCFMT_LEFT, Rect.right);
  60.  
  61.     CBitmap bm;
  62.     bm.LoadBitmap(IDR_SRVRAPPL);
  63.     CImageList *il = new CImageList;
  64.     il->Create(16, 16, ILC_COLOR | ILC_MASK, 1, 0);
  65.     il->Add(&bm, RGB(0, 128, 128)); 
  66.     m_ApplList->SetImageList(il, LVSIL_SMALL);
  67.     bm.DeleteObject();
  68.     
  69.     CWBApp *WBApp = (CWBApp *)AfxGetApp();
  70.     cdp_t   cdp   = WBApp->GetCdp();
  71.     tcursnum Curs;
  72.     if (cd_Open_cursor_direct(cdp, "SELECT OBJ_NAME FROM OBJTAB WHERE CATEGORY=Chr(7)", &Curs))
  73.     {
  74.         Signalize();
  75.         return(FALSE);
  76.     }
  77.     tobjname Appl;
  78.     trecnum  Pos;
  79.     Pos = 0;
  80.     while (!cd_Read_ind(cdp, Curs, Pos++, 1, NOINDEX, Appl))
  81.     {
  82.         small_string(Appl, TRUE);
  83.         m_ApplList->InsertItem
  84.         (
  85.             Pos,
  86.             Appl,
  87.             0
  88.         );
  89.     }
  90.     if (cd_Sz_error(cdp) != OUT_OF_TABLE)
  91.         Signalize();
  92.     Close_cursor(Curs);
  93.  
  94.     return TRUE;  // return TRUE unless you set the focus to a control
  95.                   // EXCEPTION: OCX Property Pages should return FALSE
  96. }
  97.  
  98. void CSelApplDlg::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
  99. {
  100.     NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  101.     // TODO: Add your control notification handler code here
  102.     if (pNMListView->uNewState & LVIS_SELECTED)
  103.         SetDlgItemText(IDC_APPLEDIT, m_ApplList->GetItemText(pNMListView->iItem, 0));
  104.     *pResult = 0;
  105. }
  106.  
  107.  
  108. void CSelApplDlg::OnChange() 
  109. {
  110.     // TODO: Add your control notification handler code here
  111.     GetDlgItem(IDOK)->EnableWindow(GetDlgItem(IDC_APPLEDIT)->GetWindowTextLength());
  112. }
  113.  
  114.  
  115. void CSelApplDlg::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
  116. {
  117.     // TODO: Add your control notification handler code here
  118.     OnOK();
  119.     *pResult = 0;
  120. }
  121.  
  122. void CSelApplDlg::OnOK() 
  123. {
  124.     // TODO: Add extra validation here
  125.     tobjname Appl;
  126.     if (!GetDlgItemText(IDC_APPLEDIT, Appl, sizeof(Appl)))
  127.         return;
  128.     if (!((CWBApp *)AfxGetApp())->SetApplication(Appl))
  129.         return;
  130.     if (m_SelAppl)
  131.         lstrcpy(m_SelAppl, Appl);
  132.     CDialog::OnOK();
  133. }
  134.  
  135. void CSelApplDlg::OnDestroy() 
  136. {
  137.     CDialog::OnDestroy();
  138.     // TODO: Add your message handler code here
  139.     CImageList *il = m_ApplList->GetImageList(LVSIL_SMALL);
  140.     if (il)
  141.         delete il;
  142. }
  143.