void CQCTestDlg::OnTest() 
{
    CString         oDispStr;     // Tekst z pola edycji w oknie.
    BSTR            bstrDispStr;  // Wywietlany cig po konwersji.
    IDlgString*     m_pDoTest;    // Wskanik interfejsu IDlgString
    HRESULT         hr;           // Wynik dziaania

    // Konwertuj pierwsz wprowadzon warto do BSTR.
    m_dispStr.GetWindowText(oDispStr);
    bstrDispStr = oDispStr.AllocSysString();

    // Inicjalizuj wskanik interfejsu.
    m_pDoTest = NULL;

    // Inicjalizuj rodowisko COM.
    CoInitialize(NULL);

    // Utwrz komponent kolejkowy.
    hr = CoGetObject(L"queue:/new:QCOne.DlgString",
                     NULL,
                     IID_IDlgString,
                     (void**) &m_pDoTest);

    // Przerwij, jeli nie powiodo si.
    if (FAILED(hr))
    {
        if (hr == MK_E_SYNTAX)
            AfxMessageBox("Parametr pszName nie jest poprawny.");

        if (hr == MK_E_NOOBJECT)
            AfxMessageBox("Nie mona odnale obiektu.");

        if (hr == MK_E_EXCEEDEDDEADLINE)
            AfxMessageBox("Utworzenie obiektu nie udao si na czas.");

        if (hr == MK_E_CONNECTMANUALLY)
            AfxMessageBox("Funkcja wymaga wprowadzenia danych.");

        if (hr == MK_E_INTERMEDIATEINTERFACENOTSUPPORTED)
            AfxMessageBox("Obiekt nie obsuguje wymaganego interfejsu.");

        // Wywietl komunikat o oglnym bdzie i wyjd.
        AfxMessageBox("Utworzenie obiektu nie powiodo si");
        return;
    }

    // Wylij wywietlany cig do kolejki.
    m_pDoTest->ShowString(bstrDispStr);

    // Oczy wskanik interfejsu.
    m_pDoTest->Release();
    m_pDoTest = NULL;

    // Wycz rodowisko COM.
    CoUninitialize();
}
