我無法弄清楚如何正確使用EM_SETHANDLE機制來設置編輯控件的文本。獲取和設置窗口文本對於我的應用程序來說太慢了。如何在編輯控件上使用EM_SETHANDLE?
從文檔我明白,分配的緩衝區將被控制起訴,它對我有一定的作用。
當文本輸入到控件中時,它會在緩衝區中看到,但是當使用memcpy等更新緩衝區時(代碼中沒有錯誤),更新的文本將無法正確顯示。我甚至在每次更新之後都嘗試過EM_SETHANDLE(SetHandle()),但是經過幾次嘗試後失敗了。有一些堆分配失敗。 RedrawWindow()也不起作用。
我無法獲得有關使用情況的任何適當的信息。幫幫我!
我的代碼,留下應用程序的具體細節,看起來像這樣。
// init
HANDLE m_hMem = HeapAlloc(...)
m_edit.SetHandle(m_hMem)
// on some event
char *pbuf = (char*)m_hMem;
memcpy(...)
在此先感謝
您正在使用多行編輯控件,對嗎?你沒有真正發佈足夠的示例代碼讓我告訴任何事情。您是否按照[本MSDN文章](http://msdn.microsoft.com/zh-cn/library/bb775456.aspx)中給出的說明進行操作?特別檢查標題爲「分配文本緩衝區」的部分。 – 2011-03-31 13:11:33
這是在Windows版本2中使用有趣的消息。 – 2011-03-31 13:42:00
@Cody:1.是的,我使用多行編輯。 2.我給出的樣本實際上是這樣的。是的,我遵循了這篇文章所說的話。建議使用堆函數而不是LocalAlloc,因此我已經做了相應的處理。 – joseph 2011-03-31 15:21:34