我正在創建使用Windows API的剪輯HDC(設備上下文)句柄,然後將其發送到另一個進程。將這個句柄用於繪製它有效嗎?是否爲另一個進程有效的HDC句柄?
1
A
回答
2
您將需要公開從應用程序中繪製到DC上的方法。
最有可能的候選對象是由您定義的Windows消息(WM_APP或WM_USER)。
WM_USER + 1,
WM_USER + 2,
WM_USER + 3,
etc...
那麼你會處理那些在你的應用程序WNDPROC
switch case
{
WM_USER + 1:
// draw a circle
WM_USER + 2:
// draw a rectangle
WM_USER + 3:
// draw a snowman
}
從第三方應用程序,他們會簡單的將消息發送到通過SendMessage函數API應用程序
最後:
SendMessage(hWndSergey, WM_USER + 1, 0, 0);
其中LPARAM和WPARAM可以指向全局共享內存來交換參數或簡單地雙字值等。
http://msdn.microsoft.com/en-us/library/ms644950(v=VS.85).aspx
2
設備上下文句柄在另一個進程中不會有效。考慮暴露其他進程可用於在窗口中繪製的界面。
+0
是的,這是我需要的,但是你怎麼做到這一點,你可以請descriebe? – Sergey 2011-03-31 20:18:53
+0
@Sergey:那其實不是你問題的一部分。所以你應該編輯它,如果這是你想要的。儘管如此,jdigital的回覆仍然值得一提。 – 0xC0000022L 2011-03-31 22:38:49
相關問題
- 1. 從HDC句柄創建QPaintDevice
- 2. 有沒有一個有效的句柄?
- 3. 如何確定進程句柄是否是當前進程?
- 4. 爲句柄寫一個getter是否是一個好習慣?
- 5. 另一個進程文件句柄上的SetFilePointer()失敗
- 6. 關閉另一個進程中互斥鎖的句柄
- 7. 什麼是Matlab的有效句柄?
- 8. 有沒有辦法檢查(文件)句柄是否有效?
- 9. lldbinit中的進程句柄
- 10. 不同的進程句柄
- 11. 句柄無效
- 12. 如何檢查MATLAB句柄是否有效?
- 13. 將ProcessID轉換爲進程句柄
- 14. 檢查線程是否存在句柄
- 15. 是否有可能通過進程名稱獲得WINAPI進程句柄,而無需遍歷所有進程
- 16. Qt句柄進程終止
- 17. 從進程得到句柄
- 18. 如何知道進程句柄是否準備就緒
- 19. 檢查句柄是否屬於當前進程?
- 20. 檢查文件是否被進程文件句柄鎖定
- 21. Bash句柄退出多個進程
- 22. 多個進程和等待句柄
- 23. 是否有可能有兩個可排序div的句柄?
- 24. 如何將DXGI共享資源的句柄傳遞給另一個進程?
- 25. 我是否必須關閉後來由子進程擁有的繼承句柄?
- 26. 從ReadFileEx使用CreateFile的有效句柄無效的句柄錯誤
- 27. 檢查matlab句柄是否是數字句柄
- 28. 是否爲特定句柄設置handlelength,而不是所有?
- 29. 創建一個有效的MSI句柄,而無需打開MSI
- 30. 獲取進程主線程的句柄
謝謝比爾,但更快:命名管道或窗口消息? – Sergey 2011-03-31 21:11:13
@Sergey:開發速度更快還是發送速度更快?命名管道允許在桌面之間發送並附帶安全性(DACL等),而窗口消息則不允許。但是,由於進程的完整性級別,窗口消息在Windows 7上也有其侷限性... – 0xC0000022L 2011-03-31 22:37:31