home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / activex / inetsdk / samples / msconf / cnftest / dlg.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-03  |  13.5 KB  |  558 lines

  1. /* ----------------------------------------------------------------------
  2.  
  3.     CNFTEST sample for Microsoft ActiveX Conferencing API
  4.  
  5.     Unpublished work.
  6.     Copyright (c) 1996, Microsoft Corporation
  7.     All rights reserved.
  8.  
  9.     dlg.c
  10.  
  11.     Dialog box procedures
  12.  
  13. ---------------------------------------------------------------------- */
  14.  
  15. #include "main.h"
  16.  
  17. #include "resource.h"
  18. #define IDR_ADDR_FIRST     IDR_ADDR_UNKNOWN
  19. #define IDR_ADDR_LAST      IDR_ADDR_ISDN
  20.  
  21. // Local dialog procs
  22. LRESULT CALLBACK ConferenceDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
  23. LRESULT CALLBACK GuidDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
  24. LRESULT CALLBACK RemoteDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
  25. LRESULT CALLBACK DataDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
  26. LRESULT CALLBACK RemoveNotifyDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
  27. LRESULT CALLBACK SendFileDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
  28.  
  29. /*  D L G  C O N F E R E N C E  C O N N E C T */
  30. /*----------------------------------------------------------------------------
  31.     %%Function: DlgConferenceConnect
  32.  
  33. ----------------------------------------------------------------------------*/
  34. BOOL DlgConferenceConnect(VOID)
  35. {
  36.     ASSERT((IDR_ADDR_UNKNOWN - IDR_ADDR_FIRST) == CONF_ADDR_UNKNOWN);
  37.     ASSERT((IDR_ADDR_IP - IDR_ADDR_FIRST) == CONF_ADDR_IP);
  38.     ASSERT((IDR_ADDR_MACHINE - IDR_ADDR_FIRST) == CONF_ADDR_MACHINENAME);
  39.     ASSERT((IDR_ADDR_PSTN - IDR_ADDR_FIRST) == CONF_ADDR_PSTN);
  40.  
  41.     ASSERT((IDC_MT_DATA  - IDC_MT_DATA) == 0);
  42.     ASSERT((IDC_MT_AUDIO - IDC_MT_DATA) == 1);
  43.     ASSERT((IDC_MT_VIDEO - IDC_MT_DATA) == 2);
  44.  
  45.     return (0 == DialogBox(ghInst, MAKEINTRESOURCE(IDD_CONFERENCE),
  46.         ghwndMain, (DLGPROC)ConferenceDlgProc));
  47. }
  48.  
  49. /*  D L G  G U I D */
  50. /*----------------------------------------------------------------------------
  51.     %%Function: DlgGuid
  52.  
  53. ----------------------------------------------------------------------------*/
  54. BOOL DlgGuid(VOID)
  55. {
  56.     return (0 == DialogBox(ghInst, MAKEINTRESOURCE(IDD_SETGUID),
  57.         ghwndMain, (DLGPROC)GuidDlgProc));
  58. }
  59.  
  60. /*  D L G  S E N D  D A T A */
  61. /*----------------------------------------------------------------------------
  62.     %%Function: DlgSendData
  63.  
  64. ----------------------------------------------------------------------------*/
  65. BOOL DlgSendData(VOID)
  66. {
  67.     return (0 == DialogBox(ghInst, MAKEINTRESOURCE(IDD_SENDDATA),
  68.         ghwndMain, (DLGPROC)DataDlgProc));
  69. }
  70.  
  71. /*  D L G  L A U N C H  R E M O T E */
  72. /*----------------------------------------------------------------------------
  73.     %%Function: DlgLaunchRemote
  74.  
  75. ----------------------------------------------------------------------------*/
  76. BOOL DlgLaunchRemote(VOID)
  77. {
  78.     return (0 == DialogBox(ghInst, MAKEINTRESOURCE(IDD_LAUNCHREMOTE),
  79.         ghwndMain, (DLGPROC)RemoteDlgProc));
  80. }
  81.  
  82. /*  D L G  R E M O V E  N O T I F Y */
  83. /*----------------------------------------------------------------------------
  84.     %%Function: DlgRemoveNotify
  85.  
  86. ----------------------------------------------------------------------------*/
  87. BOOL DlgRemoveNotify(VOID)
  88. {
  89.     return (0 == DialogBox(ghInst, MAKEINTRESOURCE(IDD_REMOVENOTIFY),
  90.         ghwndMain, (DLGPROC)RemoveNotifyDlgProc));
  91. }
  92.  
  93. /*  D L G  S E N D  F I L E */
  94. /*----------------------------------------------------------------------------
  95.     %%Function: DlgSendFile
  96.  
  97. ----------------------------------------------------------------------------*/
  98. BOOL DlgSendFile(VOID)
  99. {
  100.     return (0 == DialogBox(ghInst, MAKEINTRESOURCE(IDD_SENDFILE),
  101.         ghwndMain, (DLGPROC)SendFileDlgProc));
  102. }
  103.  
  104.  
  105.  
  106.  
  107. /*  C O N F E R E N C E  D L G  P R O C */
  108. /*----------------------------------------------------------------------------
  109.     %%Function: ConferenceDlgProc
  110.  
  111. ----------------------------------------------------------------------------*/
  112. LRESULT CALLBACK ConferenceDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
  113. {
  114.     switch (uMsg)
  115.     {
  116.     case WM_INITDIALOG:
  117.         CenterWindow(hdlg, ghwndMain);
  118.  
  119.         SetDlgItemText(hdlg, IDE_CONFNAME, gPref.szConferenceName);
  120.         SetDlgItemText(hdlg, IDE_ADDR, gPref.szDefName);
  121.         SetDlgItemInt(hdlg, IDE_HCONF, (UINT) gPref.hConf, fFalse);
  122.         CheckRadioButton(hdlg, IDR_ADDR_FIRST, IDR_ADDR_LAST,
  123.                 IDR_ADDR_FIRST + gPref.iAddrType);
  124.  
  125.         { // check media types
  126.             int id;
  127.             DWORD dwFlag = 0x01;
  128.             for (id = IDC_MT_DATA; id <= IDC_MT_VIDEO; id++)
  129.             {
  130.                 CheckDlgButton(hdlg, id, 0 != (gPref.dwMediaType & dwFlag));
  131.                 dwFlag <<= 1;
  132.             }
  133.         }
  134.  
  135.         return fTrue;
  136.  
  137.     case WM_COMMAND:
  138.         switch (GET_WM_COMMAND_ID(wparam, lparam))
  139.         {
  140.         case IDOK:
  141.             gPref.iAddrType = GetRadioButton(hdlg, IDR_ADDR_FIRST, IDR_ADDR_LAST)
  142.                 - IDR_ADDR_FIRST;
  143.  
  144.             GetDlgItemText(hdlg, IDE_CONFNAME,
  145.                 gPref.szConferenceName, sizeof(gPref.szConferenceName));
  146.             GetDlgItemText(hdlg, IDE_ADDR,
  147.                 gPref.szDefName, sizeof(gPref.szDefName));
  148.             gPref.hConf = (HCONF) GetDlgItemInt(hdlg, IDE_HCONF, NULL, fFalse);
  149.  
  150.             { // check media types
  151.                 int id;
  152.                 DWORD dwFlag = 0x01;
  153.                 gPref.dwMediaType = 0;
  154.                 for (id = IDC_MT_DATA; id <= IDC_MT_VIDEO; id++)
  155.                 {
  156.                     if (IsDlgButtonChecked(hdlg, id))
  157.                         gPref.dwMediaType |= dwFlag;
  158.                     dwFlag <<= 1;
  159.                 }
  160.             }
  161.  
  162.             EndDialog(hdlg, 0);
  163.             return fTrue;
  164.  
  165.         case IDCANCEL:
  166.             EndDialog(hdlg, 1);
  167.             return fTrue;
  168.  
  169.         default:
  170.             return fTrue;
  171.         } /* switch (cmd) */
  172.  
  173.     default:
  174.         break;
  175.     } /* switch (uMsg) */
  176.  
  177.     return fFalse;
  178. }
  179.  
  180.  
  181. /*  G U I D  D L G  P R O C */
  182. /*----------------------------------------------------------------------------
  183.     %%Function: GuidDlgProc
  184.  
  185. ----------------------------------------------------------------------------*/
  186. LRESULT CALLBACK GuidDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
  187. {
  188.     switch (uMsg)
  189.     {
  190.     case WM_INITDIALOG:
  191.     {
  192.         CHAR sz[MAX_PATH];
  193.  
  194.         CenterWindow(hdlg, ghwndMain);
  195.  
  196.         GuidToSz(&gPref.guid, sz);
  197.         SetDlgItemText(hdlg, IDE_GUID, sz);
  198.         SetDlgItemText(hdlg, IDE_APPLICATION, gPref.szAppName);
  199.         SetDlgItemText(hdlg, IDE_COMMANDLINE, gPref.szCmdLine);
  200.         SetDlgItemText(hdlg, IDE_DIRECTORY,   gPref.szCurrDir);
  201.  
  202.         return fTrue;
  203.     }
  204.  
  205.     case WM_COMMAND:
  206.         switch (GET_WM_COMMAND_ID(wparam, lparam))
  207.         {
  208.         case IDOK:
  209.         {
  210.             CHAR sz[MAX_PATH];
  211.  
  212.             GetDlgItemText(hdlg, IDE_APPLICATION,
  213.                 gPref.szAppName, sizeof(gPref.szAppName));
  214.             GetDlgItemText(hdlg, IDE_COMMANDLINE,
  215.                 gPref.szCmdLine, sizeof(gPref.szCmdLine));
  216.             GetDlgItemText(hdlg, IDE_DIRECTORY,
  217.                 gPref.szCurrDir, sizeof(gPref.szCurrDir));
  218.             GetDlgItemText(hdlg, IDE_GUID, sz, sizeof(sz));
  219.             SzToGuid(sz, &gPref.guid);
  220.  
  221.             EndDialog(hdlg, 0);
  222.             return fTrue;
  223.         }
  224.  
  225.         case IDCANCEL:
  226.             EndDialog(hdlg, 1);
  227.             return fTrue;
  228.  
  229.         default:
  230.             return fTrue;
  231.         } /* switch (cmd) */
  232.  
  233.     default:
  234.         break;
  235.     } /* switch (uMsg) */
  236.  
  237.     return fFalse;
  238. }
  239.  
  240.  
  241.  
  242. /*  R E M O T E  D L G  P R O C */
  243. /*----------------------------------------------------------------------------
  244.     %%Function: RemoteDlgProc
  245.  
  246. ----------------------------------------------------------------------------*/
  247. LRESULT CALLBACK RemoteDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
  248. {
  249.     switch (uMsg)
  250.     {
  251.     case WM_INITDIALOG:
  252.     {
  253.         CHAR sz[MAX_PATH];
  254.         CONFUSERINFO confUserInfo;
  255.         HWND hwnd;
  256.         CONFERR dwResult;
  257.  
  258.         CenterWindow(hdlg, ghwndMain);
  259.  
  260.         // Set remote guid
  261.         GuidToSz(&gPref.guidRemote, sz);
  262.         SetDlgItemText(hdlg, IDE_GUID, sz);
  263.  
  264.         // Set remote user
  265.         InitStruct(&confUserInfo);
  266.         hwnd = GetDlgItem(hdlg, IDC_USERNAME);
  267.  
  268.         // Add a string for sending to all users
  269.         SendMessage(hwnd, CB_ADDSTRING, 0,(LPARAM)"<everyone>");
  270.  
  271.         for( ; ; )
  272.         {
  273.             dwResult = ConferenceGetInfo(gPref.hConf, CONF_ENUM_USER, &confUserInfo);
  274.             if(dwResult != CONFERR_SUCCESS)
  275.             {
  276.                 if(dwResult != CONFERR_ENUM_COMPLETE)
  277.                 {
  278.                     Log1(LOG_ERROR, "ConferenceGetInfo returns %08x", dwResult);
  279.                     break;
  280.                 }
  281.                 break;
  282.             }
  283.             SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM) confUserInfo.szUserName);
  284.         }
  285.         
  286.         // Set the default user to everyone
  287.         SetDlgItemText(hdlg, IDC_USERNAME, "<everyone>");
  288.  
  289.         return fTrue;
  290.     }
  291.  
  292.     case WM_COMMAND:
  293.         switch (GET_WM_COMMAND_ID(wparam, lparam))
  294.         {
  295.         case IDOK:
  296.         {
  297.             CHAR sz[MAX_PATH];
  298.  
  299.             GetDlgItemText(hdlg, IDC_USERNAME, gPref.szUserName, sizeof(gPref.szUserName));
  300.             GetDlgItemText(hdlg, IDE_GUID, sz, sizeof(sz));
  301.             SzToGuid(sz, &gPref.guidRemote);
  302.  
  303.             EndDialog(hdlg, 0);
  304.             return fTrue;
  305.         }
  306.  
  307.         case IDCANCEL:
  308.             EndDialog(hdlg, 1);
  309.             return fTrue;
  310.  
  311.         default:
  312.             return fTrue;
  313.         } /* switch (cmd) */
  314.  
  315.     default:
  316.         break;
  317.     } /* switch (uMsg) */
  318.  
  319.     return fFalse;
  320. }
  321.  
  322.  
  323.  
  324. /*  D A T A  D L G  P R O C */
  325. /*----------------------------------------------------------------------------
  326.     %%Function: DataDlgProc
  327.  
  328. ----------------------------------------------------------------------------*/
  329. LRESULT CALLBACK DataDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
  330. {
  331.     switch (uMsg)
  332.     {
  333.     case WM_INITDIALOG:
  334.     {
  335.         CHAR sz[MAX_PATH];
  336.         CONFDEST confDest;
  337.         HWND hwnd;
  338.         CONFERR dwResult;
  339.  
  340.         CenterWindow(hdlg, ghwndMain);
  341.  
  342.         GuidToSz(&gPref.guidRemote, sz);
  343.         SetDlgItemText(hdlg, IDE_GUID, sz);
  344.         SetDlgItemText(hdlg, IDE_DATA, gPref.szData);
  345.  
  346.         InitStruct(&confDest);
  347.         hwnd = GetDlgItem(hdlg, IDC_USERID);
  348.  
  349.         // Add a string for sending to all users
  350.         SendMessage(hwnd, CB_ADDSTRING, 0,(LPARAM)"0");
  351.  
  352.         for( ; ; )
  353.         {
  354.             dwResult = ConferenceGetInfo(gPref.hConf, CONF_ENUM_PEER, &confDest);
  355.             if( dwResult != CONFERR_SUCCESS)
  356.             {
  357.                 if( dwResult != CONFERR_ENUM_COMPLETE)
  358.                 {
  359.                     Log1(LOG_ERROR, "ConferenceGetInfo returns %08x", dwResult);
  360.                     break;
  361.                 }
  362.                 break;    
  363.             }
  364.             wsprintf(sz, "%d", confDest.dwUserId);
  365.             SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM) sz);
  366.         }
  367.         
  368.         // Set the default user to everyone
  369.         SetDlgItemText(hdlg, IDC_USERID, "0");
  370.  
  371.         return fTrue;
  372.     }
  373.  
  374.     case WM_COMMAND:
  375.         switch (GET_WM_COMMAND_ID(wparam, lparam))
  376.         {
  377.         case IDOK:
  378.         {
  379.             CHAR sz[MAX_PATH];
  380.  
  381.             GetDlgItemText(hdlg, IDE_DATA, gPref.szData, sizeof(gPref.szData));
  382.             gPref.dwRemoteId = GetDlgItemInt(hdlg, IDC_USERID, NULL, fFalse);
  383.  
  384.             GetDlgItemText(hdlg, IDE_GUID, sz, sizeof(sz));
  385.             SzToGuid(sz, &gPref.guidRemote);
  386.  
  387.             EndDialog(hdlg, 0);
  388.             return fTrue;
  389.         }
  390.  
  391.         case IDCANCEL:
  392.             EndDialog(hdlg, 1);
  393.             return fTrue;
  394.  
  395.         default:
  396.             return fTrue;
  397.         } /* switch (cmd) */
  398.  
  399.     default:
  400.         break;
  401.     } /* switch (uMsg) */
  402.  
  403.     return fFalse;
  404. }
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412. /*  R E M O V E  N O T I F Y D L G  P R O C */
  413. /*----------------------------------------------------------------------------
  414.     %%Function: RemoveNotifyDlgProc
  415.  
  416. ----------------------------------------------------------------------------*/
  417. LRESULT CALLBACK RemoveNotifyDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
  418. {
  419.     switch (uMsg)
  420.     {
  421.     case WM_INITDIALOG:
  422.     {
  423.         HWND hwnd;
  424.         int i;
  425.         
  426.         // Fill in the drop down list here.
  427.         CHAR sz[MAX_PATH];
  428.  
  429.         CenterWindow(hdlg, ghwndMain);
  430.         
  431.         hwnd = GetDlgItem(hdlg, IDC_HCONFNOTIFY);
  432.  
  433.         for( i = 0; i < giCount; i++)
  434.         {
  435.             wsprintf(sz, "%d", grhConfNotify[i]);
  436.             SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM) sz);
  437.         }
  438.  
  439.         if( giCount != 0)  // there are callbacks registered
  440.             SetDlgItemInt(hdlg, IDC_HCONFNOTIFY, (UINT)grhConfNotify[0], fFalse);
  441.  
  442.         
  443.         return fTrue;
  444.     }
  445.  
  446.     case WM_COMMAND:
  447.         switch (GET_WM_COMMAND_ID(wparam, lparam))
  448.         {
  449.         case IDOK:
  450.         {
  451.             // return the selected handle
  452.             gPref.hConfNotify = (HCONFNOTIFY)GetDlgItemInt(hdlg, IDC_HCONFNOTIFY, NULL, fFalse);
  453.             EndDialog(hdlg, 0);
  454.             return fTrue;
  455.         }
  456.  
  457.         case IDCANCEL:
  458.             EndDialog(hdlg, 1);
  459.             return fTrue;
  460.  
  461.         default:
  462.             return fTrue;
  463.         } /* switch (cmd) */
  464.  
  465.     default:
  466.         break;
  467.     } /* switch (uMsg) */
  468.  
  469.     return fFalse;
  470. }
  471.  
  472.  
  473. /*  S E N D F I L E  D L G  P R O C */
  474. /*----------------------------------------------------------------------------
  475.     %%Function: SendFileDlgProc
  476.  
  477. ----------------------------------------------------------------------------*/
  478. LRESULT CALLBACK SendFileDlgProc(HWND hdlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
  479. {
  480.     switch (uMsg)
  481.     {
  482.     case WM_INITDIALOG:
  483.     {
  484.         HWND hwnd;
  485.         CONFERR dwResult;
  486.         CONFUSERINFO confUserInfo;
  487.     
  488.         CenterWindow(hdlg, ghwndMain);
  489.  
  490.         InitStruct(&confUserInfo);
  491.         hwnd = GetDlgItem(hdlg, IDC_USERNAME);
  492.  
  493.         // Add a string for sending to all users
  494.         SendMessage(hwnd, CB_ADDSTRING, 0,(LPARAM)"<everyone>");
  495.  
  496.         for( ; ; )
  497.         {
  498.             dwResult = ConferenceGetInfo(gPref.hConf, CONF_ENUM_USER, &confUserInfo);
  499.             if( dwResult != CONFERR_SUCCESS)
  500.             {
  501.                 if( dwResult != CONFERR_ENUM_COMPLETE)
  502.                 {
  503.                     Log1(LOG_ERROR, "ConferenceGetInfo returns %08x", dwResult);
  504.                     break;
  505.                 }
  506.                 break;
  507.             }
  508.             SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM) confUserInfo.szUserName);
  509.         }
  510.                 
  511.         // Set the default user to everyone
  512.         SetDlgItemText(hdlg, IDC_USERNAME, "<everyone>");
  513.         
  514.         // Set the default filename
  515.         SetDlgItemText(hdlg, IDE_FILENAME, gPref.szFileName);
  516.         
  517.         return fTrue;
  518.     }
  519.  
  520.     case WM_COMMAND:
  521.         switch (GET_WM_COMMAND_ID(wparam, lparam))
  522.         {
  523.         case IDOK:
  524.         {
  525.             GetDlgItemText(hdlg, IDE_FILENAME, gPref.szFileName, sizeof(gPref.szFileName));
  526.             GetDlgItemText(hdlg, IDC_USERNAME, gPref.szUserName, sizeof(gPref.szUserName));
  527.             EndDialog(hdlg, 0);
  528.             return fTrue;
  529.         }
  530.  
  531.         case IDCANCEL:
  532.             EndDialog(hdlg, 1);
  533.             return fTrue;
  534.         
  535.         case IDC_BROWSE:
  536.         {
  537.             char szFileName[MAX_PATH];
  538.  
  539.             // Get the file name
  540.             if (!FGetFileName(szFileName))
  541.                 return fFalse;
  542.             
  543.             SetDlgItemText(hdlg, IDE_FILENAME, szFileName);
  544.  
  545.             return fTrue;
  546.         }
  547.  
  548.  
  549.         default:
  550.             return fTrue;
  551.         } /* switch (cmd) */
  552.  
  553.     default:
  554.         break;
  555.     } /* switch (uMsg) */
  556.  
  557.     return fFalse;
  558. }