ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

lanconnectui.cpp
Go to the documentation of this file.
00001 #include <precomp.h>
00002 
00003 WINE_DEFAULT_DEBUG_CHANNEL (shell);
00004 
00008 
00009 typedef enum
00010 {
00011     NET_TYPE_CLIENT = 1,
00012     NET_TYPE_SERVICE = 2,
00013     NET_TYPE_PROTOCOL = 3
00014 } NET_TYPE;
00015 
00016 typedef struct
00017 {
00018     NET_TYPE Type;
00019     DWORD dwCharacteristics;
00020     LPWSTR szHelp;
00021     INetCfgComponent  *pNCfgComp;
00022     UINT NumPropDialogOpen;
00023 } NET_ITEM, *PNET_ITEM;
00024 
00025 class CNetConnectionPropertyUi:
00026     public INetConnectionPropertyUi2,
00027     public INetLanConnectionUiInfo,
00028     public INetConnectionConnectUi
00029 {
00030     public:
00031         CNetConnectionPropertyUi();
00032         
00033         // IUnknown
00034         virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID *ppvOut);
00035         virtual ULONG WINAPI AddRef();
00036         virtual ULONG WINAPI Release();
00037         
00038         // INetConnectionPropertyUi2
00039         virtual HRESULT WINAPI AddPages(HWND hwndParent, LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam);
00040         virtual HRESULT WINAPI GetIcon(DWORD dwSize, HICON *phIcon);
00041 
00042         // INetLanConnectionUiInfo
00043         virtual HRESULT WINAPI GetDeviceGuid(GUID *pGuid);
00044         
00045         // INetConnectionConnectUi
00046         virtual HRESULT WINAPI SetConnection(INetConnection* pCon);
00047         virtual HRESULT WINAPI Connect(HWND hwndParent, DWORD dwFlags);
00048         virtual HRESULT WINAPI Disconnect(HWND hwndParent, DWORD dwFlags);
00049     
00050     private:
00051         BOOL GetINetCfgComponent(INetCfg *pNCfg, INetCfgComponent ** pOut);
00052         VOID EnumComponents(HWND hDlgCtrl, INetCfg *pNCfg, const GUID *CompGuid, UINT Type);
00053         VOID InitializeLANPropertiesUIDlg(HWND hwndDlg);
00054         VOID ShowNetworkComponentProperties(HWND hwndDlg);
00055         static INT_PTR CALLBACK LANPropertiesUIDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
00056         
00057         INetConnection * pCon;
00058         INetCfgLock *NCfgLock;
00059         INetCfg * pNCfg;
00060         NETCON_PROPERTIES * pProperties;
00061         LONG ref;
00062 };
00063 
00064 CNetConnectionPropertyUi::CNetConnectionPropertyUi()
00065 {
00066     ref = 0;
00067     pCon = NULL;
00068     pNCfg = NULL;
00069     NCfgLock = NULL;
00070     pProperties = NULL;
00071 }
00072 
00073 HPROPSHEETPAGE
00074 InitializePropertySheetPage(LPWSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
00075 {
00076     PROPSHEETPAGEW ppage;
00077 
00078     memset(&ppage, 0x0, sizeof(PROPSHEETPAGEW));
00079     ppage.dwSize = sizeof(PROPSHEETPAGEW);
00080     ppage.dwFlags = PSP_DEFAULT;
00081     ppage.pszTemplate = resname;
00082     ppage.pfnDlgProc = dlgproc;
00083     ppage.lParam = lParam;
00084     ppage.hInstance = netshell_hInstance;
00085     if (szTitle)
00086     {
00087         ppage.dwFlags |= PSP_USETITLE;
00088         ppage.pszTitle = szTitle;
00089     }
00090     return CreatePropertySheetPageW(&ppage);
00091 }
00092 
00093 VOID
00094 AddItemToListView(HWND hDlgCtrl, PNET_ITEM pItem, LPWSTR szName, BOOL bChecked)
00095 {
00096     LVITEMW lvItem;
00097 
00098     ZeroMemory(&lvItem, sizeof(lvItem));
00099     lvItem.mask  = LVIF_TEXT | LVIF_PARAM;
00100     lvItem.pszText = szName;
00101     lvItem.lParam = (LPARAM)pItem;
00102     lvItem.iItem = ListView_GetItemCount(hDlgCtrl);
00103     lvItem.iItem = SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&lvItem);
00104     ListView_SetCheckState(hDlgCtrl, lvItem.iItem, bChecked);
00105 }
00106 
00107 BOOL
00108 CNetConnectionPropertyUi::GetINetCfgComponent(INetCfg *pNCfg, INetCfgComponent ** pOut)
00109 {
00110     LPWSTR pName;
00111     HRESULT hr;
00112     INetCfgComponent * pNCg;
00113     ULONG Fetched;
00114     IEnumNetCfgComponent * pEnumCfg;
00115 
00116     hr = pNCfg->EnumComponents(&GUID_DEVCLASS_NET, &pEnumCfg);
00117     if (FAILED(hr))
00118     {
00119         return FALSE;
00120     }
00121 
00122     while (pEnumCfg->Next(1, &pNCg, &Fetched) == S_OK)
00123     {
00124        hr = pNCg->GetDisplayName(&pName);
00125        if (SUCCEEDED(hr))
00126        {
00127            if (!_wcsicmp(pName, pProperties->pszwDeviceName))
00128            {
00129                *pOut = pNCg;
00130                pEnumCfg->Release();
00131                return TRUE;
00132            }
00133            CoTaskMemFree(pName);
00134        }
00135        pNCg->Release();
00136     }
00137     pEnumCfg->Release();
00138     return FALSE;
00139 }
00140 
00141 VOID
00142 CNetConnectionPropertyUi::EnumComponents(HWND hDlgCtrl, INetCfg *pNCfg, const GUID *CompGuid, UINT Type)
00143 {
00144     HRESULT hr;
00145     IEnumNetCfgComponent * pENetCfg;
00146     INetCfgComponent  *pNCfgComp, *pAdapterCfgComp;
00147     INetCfgComponentBindings * pCompBind;
00148     ULONG Num;
00149     DWORD dwCharacteristics;
00150     LPOLESTR pDisplayName, pHelpText;
00151     PNET_ITEM pItem;
00152     BOOL bChecked;
00153 
00154     hr = pNCfg->EnumComponents(CompGuid, &pENetCfg);
00155     if (FAILED(hr))
00156     {
00157         pNCfg->Release();
00158         return;
00159     }
00160     while(pENetCfg->Next(1, &pNCfgComp, &Num) == S_OK)
00161     {
00162           hr = pNCfgComp->GetCharacteristics(&dwCharacteristics);
00163           if (SUCCEEDED(hr) && (dwCharacteristics & NCF_HIDDEN))
00164           {
00165               pNCfgComp->Release();
00166               continue;
00167           }
00168           pDisplayName = NULL;
00169           pHelpText = NULL;
00170           hr = pNCfgComp->GetDisplayName(&pDisplayName);
00171           hr = pNCfgComp->GetHelpText(&pHelpText);
00172           bChecked = TRUE; //ReactOS hack
00173           hr = pNCfgComp->QueryInterface(IID_INetCfgComponentBindings, (LPVOID*)&pCompBind);
00174           if (SUCCEEDED(hr))
00175           {
00176               if (GetINetCfgComponent(pNCfg, &pAdapterCfgComp))
00177               {
00178                   hr = pCompBind->IsBoundTo(pAdapterCfgComp);
00179                   if (hr == S_OK)
00180                       bChecked = TRUE;
00181                   else
00182                       bChecked = FALSE;
00183                   pAdapterCfgComp->Release();
00184                   pCompBind->Release();
00185               }
00186           }
00187 
00188           pItem = (NET_ITEM*)CoTaskMemAlloc(sizeof(NET_ITEM));
00189           if (!pItem)
00190               continue;
00191 
00192           pItem->dwCharacteristics = dwCharacteristics;
00193           pItem->szHelp = pHelpText;
00194           pItem->Type = (NET_TYPE)Type;
00195           pItem->pNCfgComp = pNCfgComp;
00196           pItem->NumPropDialogOpen = 0;
00197 
00198           AddItemToListView(hDlgCtrl, pItem, pDisplayName, bChecked);
00199           CoTaskMemFree(pDisplayName);
00200     }
00201     pENetCfg->Release();
00202 }
00203 
00204 VOID
00205 CNetConnectionPropertyUi::InitializeLANPropertiesUIDlg(HWND hwndDlg)
00206 {
00207     HRESULT hr;
00208     INetCfg *pNCfg;
00209     INetCfgLock *pNCfgLock;
00210     HWND hDlgCtrl = GetDlgItem(hwndDlg, IDC_COMPONENTSLIST);
00211     LVCOLUMNW lc;
00212     RECT rc;
00213     DWORD dwStyle;
00214     LPWSTR pDisplayName;
00215     LVITEMW li;
00216 
00217     SendDlgItemMessageW(hwndDlg, IDC_NETCARDNAME, WM_SETTEXT, 0, (LPARAM)pProperties->pszwDeviceName);
00218     if (pProperties->dwCharacter & NCCF_SHOW_ICON)
00219     {
00220         /* check show item on taskbar*/
00221         SendDlgItemMessageW(hwndDlg, IDC_SHOWTASKBAR, BM_SETCHECK, BST_CHECKED, 0);
00222     }
00223     if (pProperties->dwCharacter & NCCF_NOTIFY_DISCONNECTED)
00224     {
00225         /* check notify item */
00226         SendDlgItemMessageW(hwndDlg, IDC_NOTIFYNOCONNECTION, BM_SETCHECK, BST_CHECKED, 0);
00227     }
00228 
00229     memset(&lc, 0, sizeof(LV_COLUMN));
00230     lc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT;
00231     lc.fmt = LVCFMT_FIXED_WIDTH;
00232     if (GetClientRect(hDlgCtrl, &rc))
00233     {
00234         lc.mask |= LVCF_WIDTH;
00235         lc.cx = rc.right - rc.left;
00236     }
00237     lc.pszText = (LPWSTR)L"";
00238     (void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 0, (LPARAM)&lc);
00239     dwStyle = (DWORD) SendMessage(hDlgCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
00240     dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES;
00241     SendMessage(hDlgCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
00242 
00243     hr = CoCreateInstance(CLSID_CNetCfg, NULL, CLSCTX_INPROC_SERVER, IID_INetCfg, (LPVOID*)&pNCfg);
00244     if (FAILED(hr))
00245         return;
00246 
00247     hr = pNCfg->QueryInterface(IID_INetCfgLock, (LPVOID*)&pNCfgLock);
00248     hr = pNCfgLock->AcquireWriteLock(100, L"", &pDisplayName);
00249     if (hr == S_FALSE)
00250     {
00251         CoTaskMemFree(pDisplayName);
00252         return;
00253     }
00254 
00255     NCfgLock = pNCfgLock;
00256     hr = pNCfg->Initialize(NULL);
00257     if (FAILED(hr))
00258     {
00259         pNCfg->Release();
00260         return;
00261     }
00262 
00263     EnumComponents(hDlgCtrl, pNCfg, &GUID_DEVCLASS_NETCLIENT, NET_TYPE_CLIENT);
00264     EnumComponents(hDlgCtrl, pNCfg, &GUID_DEVCLASS_NETSERVICE, NET_TYPE_SERVICE);
00265     EnumComponents(hDlgCtrl, pNCfg, &GUID_DEVCLASS_NETTRANS, NET_TYPE_PROTOCOL);
00266     this->pNCfg = pNCfg;
00267 
00268     ZeroMemory(&li, sizeof(li));
00269     li.mask = LVIF_STATE;
00270     li.stateMask = (UINT)-1;
00271     li.state = LVIS_FOCUSED|LVIS_SELECTED;
00272     (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
00273 }
00274 
00275 VOID
00276 CNetConnectionPropertyUi::ShowNetworkComponentProperties(HWND hwndDlg)
00277 {
00278     LVITEMW lvItem;
00279     HWND hDlgCtrl;
00280     UINT Index, Count;
00281     HRESULT hr;
00282     INetCfgComponent *pNCfgComp;
00283     PNET_ITEM pItem;
00284 
00285     hDlgCtrl = GetDlgItem(hwndDlg, IDC_COMPONENTSLIST);
00286     Count = ListView_GetItemCount(hDlgCtrl);
00287     if (!Count)
00288         return;
00289 
00290     ZeroMemory(&lvItem, sizeof(LVITEMW));
00291     lvItem.mask = LVIF_PARAM | LVIF_STATE;
00292     lvItem.stateMask = (UINT)-1;
00293     for (Index = 0; Index < Count; Index++)
00294     {
00295         lvItem.iItem = Index;
00296         if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&lvItem))
00297         {
00298            if (lvItem.state & LVIS_SELECTED)
00299                break;
00300         }
00301     }
00302 
00303     if (!(lvItem.state & LVIS_SELECTED))
00304     {
00305         return;
00306     }
00307 
00308     pItem = (PNET_ITEM)lvItem.lParam;
00309     pNCfgComp = (INetCfgComponent*)pItem->pNCfgComp;
00310     hr = pNCfgComp->RaisePropertyUi(GetParent(hwndDlg), NCRP_QUERY_PROPERTY_UI, (INetConnectionConnectUi*)this);
00311     if (SUCCEEDED(hr))
00312     {
00313         hr = pNCfgComp->RaisePropertyUi(GetParent(hwndDlg), NCRP_SHOW_PROPERTY_UI, (INetConnectionConnectUi*)this);
00314     }
00315 }
00316 
00317 INT_PTR
00318 CALLBACK
00319 CNetConnectionPropertyUi::LANPropertiesUIDlg(
00320     HWND hwndDlg,
00321     UINT uMsg,
00322     WPARAM wParam,
00323     LPARAM lParam)
00324 {
00325     PROPSHEETPAGE *page;
00326     LPNMLISTVIEW lppl;
00327     LVITEMW li;
00328     PNET_ITEM pItem;
00329     CNetConnectionPropertyUi * This;
00330     LPPSHNOTIFY lppsn;
00331     DWORD dwShowIcon;
00332     HRESULT hr;
00333     WCHAR szKey[200];
00334     LPOLESTR pStr;
00335     HKEY hKey;
00336 
00337     switch(uMsg)
00338     {
00339         case WM_INITDIALOG:
00340             page = (PROPSHEETPAGE*)lParam;
00341             This = (CNetConnectionPropertyUi*)page->lParam;
00342             This->InitializeLANPropertiesUIDlg(hwndDlg);
00343             SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)This);
00344             return TRUE;
00345         case WM_NOTIFY:
00346             lppl = (LPNMLISTVIEW) lParam;
00347             lppsn = (LPPSHNOTIFY) lParam;
00348             if (lppsn->hdr.code == PSN_APPLY)
00349             {
00350                 This = (CNetConnectionPropertyUi*)GetWindowLongPtr(hwndDlg, DWLP_USER);
00351                 if (This->pNCfg)
00352                 {
00353                     hr = This->pNCfg->Apply();
00354                     if (FAILED(hr))
00355                         return PSNRET_INVALID;
00356                 }
00357 
00358                 if (SendDlgItemMessageW(hwndDlg, IDC_SHOWTASKBAR, BM_GETCHECK, 0, 0) == BST_CHECKED)
00359                     dwShowIcon = 1;
00360                 else
00361                     dwShowIcon = 0;
00362 
00363 
00364                 if (StringFromCLSID((CLSID)This->pProperties->guidId, &pStr) == ERROR_SUCCESS)
00365                 {
00366                     swprintf(szKey, L"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\%s\\Connection", pStr);
00367                     CoTaskMemFree(pStr);
00368                     if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szKey, 0, KEY_WRITE, &hKey) == ERROR_SUCCESS)
00369                     {
00370                         RegSetValueExW(hKey, L"ShowIcon", 0, REG_DWORD, (LPBYTE)&dwShowIcon, sizeof(DWORD));
00371                         RegCloseKey(hKey);
00372                     }
00373                 }
00374 
00375                 return PSNRET_NOERROR;
00376             }
00377 #if 0
00378             else if (lppsn->hdr.code == PSN_CANCEL)
00379             {
00380                 This = (CNetConnectionPropertyUi*)GetWindowLongPtr(hwndDlg, DWLP_USER);
00381                 if (This->pNCfg)
00382                 {
00383                     hr = This->pNCfg->Cancel();
00384                     if (SUCCEEDED(hr))
00385                         return PSNRET_NOERROR;
00386                     else
00387                         return PSNRET_INVALID;
00388                 }
00389                 return PSNRET_NOERROR;
00390             }
00391 #endif
00392             if (lppl->hdr.code == LVN_ITEMCHANGING)
00393             {
00394                     ZeroMemory(&li, sizeof(li));
00395                     li.mask = LVIF_PARAM;
00396                     li.iItem = lppl->iItem;
00397                     if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0, (LPARAM)&li))
00398                         return TRUE;
00399 
00400                     pItem = (PNET_ITEM)li.lParam;
00401                     if (!pItem)
00402                         return TRUE;
00403 
00404                     if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
00405                     {
00406                         /* new focused item */
00407                         if (pItem->dwCharacteristics & NCF_NOT_USER_REMOVABLE)
00408                             EnableWindow(GetDlgItem(hwndDlg, IDC_UNINSTALL), FALSE);
00409                         else
00410                             EnableWindow(GetDlgItem(hwndDlg, IDC_UNINSTALL), TRUE);
00411 
00412                         if (pItem->dwCharacteristics & NCF_HAS_UI)
00413                             EnableWindow(GetDlgItem(hwndDlg, IDC_PROPERTIES), TRUE);
00414                         else
00415                             EnableWindow(GetDlgItem(hwndDlg, IDC_PROPERTIES), FALSE);
00416 
00417                         SendDlgItemMessageW(hwndDlg, IDC_DESCRIPTION, WM_SETTEXT, 0, (LPARAM)pItem->szHelp);
00418                     }
00419              }
00420              break;
00421         case WM_COMMAND:
00422             if (LOWORD(wParam) == IDC_PROPERTIES)
00423             {
00424                 This = (CNetConnectionPropertyUi*) GetWindowLongPtr(hwndDlg, DWLP_USER);
00425                 This->ShowNetworkComponentProperties(hwndDlg);
00426                 return FALSE;
00427             }
00428             break;
00429     }
00430     return FALSE;
00431 }
00432 
00433 HRESULT
00434 WINAPI
00435 CNetConnectionPropertyUi::QueryInterface(
00436     REFIID iid,
00437     LPVOID *ppvObj)
00438 {
00439     LPOLESTR pStr;
00440     *ppvObj = NULL;
00441 
00442     if (IsEqualIID (iid, IID_IUnknown) ||
00443         IsEqualIID (iid, IID_INetConnectionPropertyUi) ||
00444         IsEqualIID (iid, IID_INetConnectionPropertyUi2))
00445     {
00446         *ppvObj = (INetConnectionPropertyUi2*)this;
00447         AddRef();
00448         return S_OK;
00449     }
00450     else if (IsEqualIID(iid, IID_INetLanConnectionUiInfo))
00451     {
00452         *ppvObj = (INetLanConnectionUiInfo*)this;
00453         AddRef();
00454         return S_OK;
00455     }
00456     else if (IsEqualIID(iid, IID_INetConnectionConnectUi))
00457     {
00458         *ppvObj = (INetConnectionConnectUi*)this;
00459         AddRef();
00460         return S_OK;
00461     }
00462 
00463     StringFromCLSID((CLSID)iid, &pStr);
00464     MessageBoxW(NULL, pStr, L"INetConnectionPropertyUi_fnQueryInterface", MB_OK);
00465     CoTaskMemFree(pStr);
00466     return E_NOINTERFACE;
00467 }
00468 
00469 ULONG
00470 WINAPI
00471 CNetConnectionPropertyUi::AddRef()
00472 {
00473     ULONG refCount = InterlockedIncrement(&ref);
00474 
00475     return refCount;
00476 }
00477 
00478 ULONG
00479 WINAPI
00480 CNetConnectionPropertyUi::Release()
00481 {
00482     ULONG refCount = InterlockedDecrement(&ref);
00483 
00484     if (!refCount)
00485     {
00486         if (pNCfg)
00487         {
00488             pNCfg->Uninitialize();
00489             pNCfg->Release();
00490         }
00491         if (NCfgLock)
00492         {
00493             NCfgLock->Release();
00494         }
00495         if (pProperties)
00496         {
00497             NcFreeNetconProperties(pProperties);
00498         }
00499         delete this;
00500     }
00501 
00502     return refCount;
00503 }
00504 
00505 HRESULT
00506 WINAPI
00507 CNetConnectionPropertyUi::AddPages(
00508     HWND hwndParent, 
00509     LPFNADDPROPSHEETPAGE pfnAddPage,
00510     LPARAM lParam)
00511 {
00512     HPROPSHEETPAGE hProp;
00513     BOOL ret;
00514     HRESULT hr = E_FAIL;
00515     INITCOMMONCONTROLSEX initEx;
00516 
00517     initEx.dwSize = sizeof(initEx);
00518     initEx.dwICC = ICC_LISTVIEW_CLASSES;
00519     if(!InitCommonControlsEx(&initEx))
00520         return E_FAIL;
00521 
00522     hr = pCon->GetProperties(&pProperties);
00523     if (FAILED(hr))
00524         return hr;
00525 
00526     hProp = InitializePropertySheetPage(MAKEINTRESOURCEW(IDD_NETPROPERTIES), LANPropertiesUIDlg, (LPARAM)this, pProperties->pszwName);
00527     if (hProp)
00528     {
00529         ret = (*pfnAddPage)(hProp, lParam);
00530         if (ret)
00531         {
00532             hr = NOERROR;
00533         }
00534         else
00535         {
00536             DestroyPropertySheetPage(hProp);
00537         }
00538     }
00539     return hr;
00540 }
00541 
00542 HRESULT
00543 WINAPI
00544 CNetConnectionPropertyUi::GetIcon(
00545     DWORD dwSize,
00546     HICON *phIcon)
00547 {
00548     return E_NOTIMPL;
00549 }
00550 
00551 HRESULT
00552 WINAPI
00553 CNetConnectionPropertyUi::GetDeviceGuid(GUID *pGuid)
00554 {
00555     CopyMemory(pGuid, &pProperties->guidId, sizeof(GUID));
00556     return S_OK;
00557 }
00558 
00559 HRESULT
00560 WINAPI
00561 CNetConnectionPropertyUi::SetConnection(INetConnection* pCon)
00562 {
00563     if (this->pCon)
00564         this->pCon->Release();
00565 
00566     if (!pCon)
00567         return E_POINTER;
00568 
00569     this->pCon = pCon;
00570     pCon->AddRef();
00571     return S_OK;
00572 }
00573 
00574 HRESULT
00575 WINAPI
00576 CNetConnectionPropertyUi::Connect(
00577     HWND hwndParent,
00578     DWORD dwFlags)
00579 {
00580     if (!pCon)
00581         return E_POINTER; //FIXME
00582 
00583 
00584     if (dwFlags & NCUC_NO_UI)
00585         return pCon->Connect();
00586 
00587     return E_FAIL;
00588 }
00589 
00590 HRESULT
00591 WINAPI
00592 CNetConnectionPropertyUi::Disconnect(
00593     HWND hwndParent,
00594     DWORD dwFlags)
00595 {
00596     WCHAR szBuffer[100];
00597     swprintf(szBuffer, L"INetConnectionConnectUi_fnDisconnect flags %x\n", dwFlags);
00598     MessageBoxW(NULL, szBuffer, NULL, MB_OK);
00599 
00600     return S_OK;
00601 }
00602 
00603 HRESULT WINAPI LanConnectUI_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv)
00604 {
00605     TRACE("LanConnectUI_Constructor\n");
00606 
00607     if (!ppv)
00608         return E_POINTER;
00609 
00610     if (pUnkOuter)
00611         return CLASS_E_NOAGGREGATION;
00612 
00613     CNetConnectionPropertyUi *pConPropUi = new CNetConnectionPropertyUi;
00614     if (!pConPropUi)
00615         return E_OUTOFMEMORY;
00616 
00617     pConPropUi->AddRef();
00618     HRESULT hr = pConPropUi->QueryInterface(riid, ppv);
00619     pConPropUi->Release();
00620 
00621     return hr;
00622 }

Generated on Sat May 26 2012 04:24:01 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.