BOOL CMSMQMonDlg::OnInitDialog()
{

//*****************************************************************
// Pocztek dodanego kodu

    CString oError;     // Dane bdu.
    CString oText;      // Elementy tekstu wiadomoci.

// Koniec dodanego kodu
//*****************************************************************

    CDialog::OnInitDialog();

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);              // Set big icon
    SetIcon(m_hIcon, FALSE);             // Set small icon

//*****************************************************************
// Pocztek dodanego kodu

    // Inicjalizacja rodowiska COM.
    CoInitialize(NULL);

    try
    {
        // Zawsze utwrz informacj o kolejce i jej strukturze
        // w bloku przechwytujcym.
        IMSMQQueueInfoPtr   qInfo("MSMQ.MSMQQueueInfo");
        IMSMQQueuePtr       qObject;
        IMSMQMessagePtr     qMessage("MSMQ.MSMQMessage");

        // Rozpocznij od podania struktury kolejki.
        qInfo->PathName = ".\\TestQueue";    
        qInfo->Label = "Kolejka testowa";

        // Utwrz kolejk w razie potrzeby.
        try
        {
            qInfo->Create();
        }
        catch (_com_error comerr)
        {
            // Sprawd zwrcon warto.
            HRESULT hr = comerr.Error();

            // Brak problemw, jeli kolejka ju istnieje. W 
            // przeciwnym wypadku wywietl bd.
            if (hr != MQ_ERROR_QUEUE_EXISTS)
            {
                throw comerr;
            }
        }

        // Otwrz kolejk do uycia.
        qObject = qInfo->Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE);

        // Czekaj cigle na pojawienie si wiadomoci.
        qMessage = qObject->Receive();

        // Utwrz zawarto okna na podstawie wiadomoci.
        m_msgLabel.SetWindowText(qMessage->Label);

        oText = _bstr_t(qMessage->Body).copy();
        m_msgBody.SetWindowText(oText);

        itoa(qMessage->Priority, oText.GetBuffer(2), 10);
        oText.ReleaseBuffer(-1);
        m_priority.SetWindowText(oText);

        oText = _bstr_t(qMessage->ArrivedTime).copy();
        m_arrivalTime.SetWindowText(oText);

        // Zamknij kolejk po zakoczeniu pracy.
        qObject->Close();

    }

    // Wywietl informacje o bdzie.
    catch (_com_error comerr)
    {
        HRESULT hr = comerr.Error();
        ltoa(hr, oError.GetBuffer(20), 10);
        oError.ReleaseBuffer(-1);
        AfxMessageBox("nieoczekiwany bd: " + oError);
    }

    // Usu rodowisko COM.
    CoUninitialize();

// Koniec dodanego kodu
//*****************************************************************

    return TRUE;  // return TRUE unless you set the focus to a control
}
