我正在創建使用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. 有沒有一個有效的句柄?
- 2. 爲句柄寫一個getter是否是一個好習慣?
- 3. 另一個進程文件句柄上的SetFilePointer()失敗
- 4. 關閉另一個進程中互斥鎖的句柄
- 5. 什麼是Matlab的有效句柄?
- 6. 有沒有辦法檢查(文件)句柄是否有效?
- 7. lldbinit中的進程句柄
- 8. 句柄無效
- 9. 如何檢查MATLAB句柄是否有效?
- 10. 將ProcessID轉換爲進程句柄
- 11. 檢查線程是否存在句柄
- 12. 是否有可能通過進程名稱獲得WINAPI進程句柄,而無需遍歷所有進程
- 13. 從進程得到句柄
- 14. Qt句柄進程終止
- 15. Bash句柄退出多個進程
- 16. 檢查文件是否被進程文件句柄鎖定
- 17. 如何知道進程句柄是否準備就緒
- 18. 檢查句柄是否屬於當前進程?
- 19. 如何將DXGI共享資源的句柄傳遞給另一個進程?
- 20. 從ReadFileEx使用CreateFile的有效句柄無效的句柄錯誤
- 21. 檢查matlab句柄是否是數字句柄
- 22. 創建一個有效的MSI句柄,而無需打開MSI
- 23. 查找另一個應用程序菜單的句柄(vb.net)
- 24. 獲取進程主線程的句柄
- 25. java.io.IOException:句柄無效
- 26. PoolableConnectionFactory無效句柄
- 27. Perl - Win32 - 如何從另一個進程無阻塞地讀取文件句柄?
- 28. 只要線程的任何句柄都處於打開狀態,線程標識是否保持唯一/有效?
- 29. nodyn是否將node.js作爲另一個進程調用?
- 30. 如何獲取另一個應用程序的所有窗口的句柄
謝謝比爾,但更快:命名管道或窗口消息? – Sergey 2011-03-31 21:11:13
@Sergey:開發速度更快還是發送速度更快?命名管道允許在桌面之間發送並附帶安全性(DACL等),而窗口消息則不允許。但是,由於進程的完整性級別,窗口消息在Windows 7上也有其侷限性... – 0xC0000022L 2011-03-31 22:37:31