lashatt2 -5 Light Poster

Hello Everybody,
I m working on a IRC Chat application project. I would like to know how to insert hte bitmap into the chat window. I have got a few code snippets in MFC & its working perfectly in MFC. But i cant convert it into Win32. Can anybody pls help me in this regard.

// Four variables
IRichEditOle *m_pRichEditOle;
LPOLEOBJECT m_lpObject;
LPSTORAGE m_lpStorage;
LPOLECLIENTSITE m_lpClientSite; 

void CRichEditDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
CreateFromFile("E:\\VC++\\RichEdit\\confused.bmp");
REOBJECT reobject;
ZeroMemory(&reobject, sizeof(REOBJECT));
reobject.cbStruct = sizeof(REOBJECT);

CLSID clsid;
SCODE sc = m_lpObject->GetUserClassID(&clsid);
if (sc != S_OK)
AfxThrowOleException(sc);

reobject.clsid = clsid;
reobject.cp = REO_CP_SELECTION;
reobject.dvaspect = DVASPECT_CONTENT;
reobject.dwFlags = REO_RESIZABLE | REO_BELOWBASELINE;
reobject.dwUser = 0;
reobject.poleobj = m_lpObject;

ASSERT(m_lpClientSite != NULL);
reobject.polesite = m_lpClientSite;

ASSERT(m_lpStorage != NULL);
reobject.pstg = m_lpStorage;

SIZEL sizel;
sizel.cx = sizel.cy = 0;
reobject.sizel = sizel; 

HWND hWndRT = (HWND)m_RchEditControl.GetHwnd();
::SendMessage(hWndRT, EM_SETSEL, 0, -1);
DWORD dwStart, dwEnd;
::SendMessage(hWndRT, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd);
::SendMessage(hWndRT, EM_SETSEL, dwEnd+1, dwEnd+1); 
CString strCr = "\r\n";
m_RchEditControl.SetSelText((LPCTSTR)strCr); 
m_pRichEditOle->InsertObject(&reobject); 
::SendMessage(hWndRT, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); 
if (m_lpObject)
{
m_lpObject->Release();
m_lpObject = NULL;
}
if (m_lpStorage)
{
m_lpStorage->Release();
m_lpStorage = NULL;
}
if (m_lpClientSite)
{
m_lpClientSite->Release();
m_lpClientSite = NULL;
} 
}

BOOL CRichEditDlg::CreateFromFile(LPCTSTR lpszFileName)
{
USES_CONVERSION;

ASSERT_VALID(this);
ASSERT(m_lpObject == NULL); // one time only

ASSERT(m_lpStorage == NULL);
ASSERT(m_lpClientSite == NULL);
LPLOCKBYTES lpLockBytes = NULL;
CLSID clsid = CLSID_NULL;
OLERENDER render = OLERENDER_DRAW;
CLIPFORMAT cfFormat = 0;
LPFORMATETC lpFormatEtc = NULL;

SCODE sc;

sc = ::CreateILockBytesOnHGlobal(NULL, TRUE, &lpLockBytes);
if (sc != S_OK)
AfxThrowOleException(sc);
ASSERT(lpLockBytes != NULL);

sc = ::StgCreateDocfileOnILockBytes(lpLockBytes,
STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0, &m_lpStorage);
if (sc != S_OK)
{
VERIFY(lpLockBytes->Release() == 0);
lpLockBytes = NULL;
AfxThrowOleException(sc);
}
ASSERT(m_lpStorage != NULL);

// fill in FORMATETC struct
FORMATETC formatEtc;
lpFormatEtc = &formatEtc;
lpFormatEtc->cfFormat = cfFormat;
lpFormatEtc->ptd = NULL;
lpFormatEtc->dwAspect = DVASPECT_CONTENT;
lpFormatEtc->lindex = -1;
lpFormatEtc->tymed = TYMED_NULL;

// attempt to create the object
m_pRichEditOle->GetClientSite(&m_lpClientSite);

sc = ::OleCreateFromFile(clsid, T2COLE(lpszFileName),
IID_IUnknown, OLERENDER_DRAW, lpFormatEtc, m_lpClientSite, m_lpStorage,
(void**)&m_lpObject);
if (sc != S_OK)
AfxThrowOleException(sc);

// m_lpObject is currently an IUnknown, convert to IOleObject
if (m_lpObject != NULL)
{
LPUNKNOWN lpUnk = m_lpObject;
lpUnk->QueryInterface(IID_IOleObject, (void**)&m_lpObject);
lpUnk->Release();
if (m_lpObject == NULL)
AfxThrowOleException(E_OUTOFMEMORY);
}

// all items are "contained" -- this makes our reference to this object
// weak -- which is needed for links to embedding silent update.
OleSetContainedObject(m_lpObject, TRUE);

ASSERT_VALID(this);
return TRUE;
}

void CRichEditDlg::OnDestroy() 
{
CDialog::OnDestroy();

// TODO: Add your message handler code here
if (m_pRichEditOle)
{
m_pRichEditOle->Release();
m_pRichEditOle = NULL;
} 

}
Ancient Dragon commented: Stop flooding the board with your question. -5