如標題,最近在做界面,要求實作qq聊天訊息的氣泡聊天功能,上網搜了好多資料,仍然沒有頭緒,有大神做過類似的嗎
uj5u.com熱心網友回復:
很簡單,氣泡所在的訊息框是一個 List每個氣泡都是一個 ListContainerElement
uj5u.com熱心網友回復:
大神,有沒有demo可以提供一下呢
uj5u.com熱心網友回復:
我也想知道,QQ那個氣泡是圖片還是什么?圖片上面放一個LIST控制元件嗎?uj5u.com熱心網友回復:
一個氣泡可以看作是一個容器,氣泡內的文字,圖片都是容器內的控制元件.
uj5u.com熱心網友回復:
關鍵是有沒有實作的demo,如果采用了這種方式,氣泡內可以顯示表情嗎?文字可以實作復制嗎
uj5u.com熱心網友回復:
我也想知道,QQ那個氣泡是圖片還是什么?圖片上面放一個LIST控制元件嗎?
一個氣泡可以看作是一個容器,氣泡內的文字,圖片都是容器內的控制元件.
關鍵是有沒有實作的demo,如果采用了這種方式,氣泡內可以顯示表情嗎?文字可以實作復制嗎
可以使用windowless richedit來顯示表情
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
http://code.taobao.org/svn/dragon/trunk/UIRichEditBubble Demo
uj5u.com熱心網友回復:
我也想知道,QQ那個氣泡是圖片還是什么?圖片上面放一個LIST控制元件嗎?
一個氣泡可以看作是一個容器,氣泡內的文字,圖片都是容器內的控制元件.
關鍵是有沒有實作的demo,如果采用了這種方式,氣泡內可以顯示表情嗎?文字可以實作復制嗎
可以使用windowless richedit來顯示表情
怎么做到背景圖片自適應文本或者圖片寬度的
uj5u.com熱心網友回復:
http://code.taobao.org/svn/dragon/trunk/UI
RichEditBubble Demo
淘寶??
uj5u.com熱心網友回復:
我也想知道,QQ那個氣泡是圖片還是什么?圖片上面放一個LIST控制元件嗎?
一個氣泡可以看作是一個容器,氣泡內的文字,圖片都是容器內的控制元件.
關鍵是有沒有實作的demo,如果采用了這種方式,氣泡內可以顯示表情嗎?文字可以實作復制嗎
可以使用windowless richedit來顯示表情
怎么做到背景圖片自適應文本或者圖片寬度的
對于文本,可以使用GetTextServices()->TxGetNaturalSize()計算文本大小。
對于圖片,可以使用gdi+計算圖片大小。
容器根據內容自適應?這個duilib沒有實作,其實也不難,在EstimateSize里面 計算控制元件大小+容器內邊距 就是容器大小了
uj5u.com熱心網友回復:
http://code.taobao.org/svn/dragon/trunk/UI
RichEditBubble Demo
哥們,這個svn好像打不開
uj5u.com熱心網友回復:
用svn軟體打開。或者在taobao code中搜索 dragon
uj5u.com熱心網友回復:
用svn軟體打開。
或者在taobao code中搜索 dragon
打開了 看了原始碼 不過你這是另一個庫 是可以實作氣泡的文字聊天,但是對于表情以及圖片進行氣泡封裝好像沒實作吧
uj5u.com熱心網友回復:
對你也無語了,什么都沒去了解就妄下結論uj5u.com熱心網友回復:
對你也無語了,什么都沒去了解就妄下結論
確實看了你的代碼,把你實作文字的氣泡聊天代碼移植到你的gif表情顯示時,表情中沒有氣泡效果,請問如何解決,我移植后的在表情聊天中的代碼如下:
static void __stdcall __EnumFileInDirProc(LPCTSTR szDir, LPCTSTR szName, WPARAM wParam)
{
DemoWindow* pThis = (DemoWindow*)wParam;
String strPath(szDir);
strPath.append(szName);
HANDLE hHandle = pThis->m_pRichEdit->InsertMessageStart(UI::BUBBLE_NORMAL, UI::BUBBLE_ALIGN_LEFT);
pThis->m_pRichEdit->InsertGif(strPath.c_str());
pThis->m_pRichEdit->InsertMessageFinish(hHandle);
}
void OnInitialize()
{
m_pRichEdit = (UI::IRichEdit*)this->FindChildObject(TEXT("richedit"));
m_pRichEdit->SetReadOnly(true);
// 段間距。用于撐開兩個氣泡之間的空隙
PARAFORMAT2 pf;
m_pRichEdit->GetDefaultParaFormat(&pf);
pf.dySpaceAfter = UI::Util::DXtoHimetricX(2);
pf.dySpaceBefore = UI::Util::DXtoHimetricX(2);
m_pRichEdit->SetDefaultParaFormat(&pf);
TCHAR szPath[MAX_PATH] = {0};
GetModuleFileName(GetModuleHandle(NULL), szPath, MAX_PATH);
TCHAR* p = _tcsrchr(szPath, '\\');
if(p != NULL)
*(p+1) = 0;
_tcscat(szPath, TEXT("emotion\\"));
UI::Util::EnumFileInDirectory(
szPath,
(EnumFileInDirProc)&DemoWindow::__EnumFileInDirProc,
(WPARAM)this);
}
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
這是因為你沒為richedit 開啟 bubble 模式。你對比下那兩個工程的皮膚檔案:msgbubble.enable="1"
uj5u.com熱心網友回復:
taobao內部的im 也用這個?
uj5u.com熱心網友回復:
請問這部分必須得裝Direct X嗎uj5u.com熱心網友回復:
下載下來,里面沒有richedit的demo呀uj5u.com熱心網友回復:
http://www.cnblogs.com/jackieron/p/5960861.htmluj5u.com熱心網友回復:
SVN下個Duilib Demo,里面有QQ Demo可以參考轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/95367.html
標籤:界面
上一篇:求助!MFC圖片匯入
