以下內容,主要講解了託管c++與win32api的混合程式設計,win32api函式如何在託管c++**中使用,如何過載form的winproc訊息處理函式,工作執行緒如何向winform傳送訊息等內容
1.託管c++中使用win32api函式
如使用 ::findwindow(),postmessage()函式為例
需要在工程的stdafx.h中加入如下幾條語句:(對於非託管的標頭檔案引用,以及lib的連線,最好放在stdafx.h檔案中)
#include //ptrtostringchars的定義
#include
#include "winuser.h"
#pragma comment(lib,"user32.lib");//用於使用findwindow(),postmessage()兩個函式
2.在檔案頭自定義訊息
#define wm_receive_data_success (wm_user+100)
3.過載form的winproc函式,用於處理訊息
在你的form類中,如在窗體類public ref class dispatchmainform : public system::windows::forms::form的定義中增加:
protected:
virtual void wndproc( message% m ) override
4.在窗體中任一按鈕事件中增加測試用的傳送訊息**:
string ^s3 = gcnew string(this->text);
pin_ptrstr1 = ptrtostringchars(s3);
hwnd hn= findwindow(null,str1);
postmessage(hn,wm_receive_data_success,null,null);
5. 託管 string ^指標轉為 char * 指標
string ^ pstr = "hello world!";
char* pchars = (char*)marshal::stringtohglobalansi(pstr).topointer();
//使用pchars
marshal::freehglobal((intptr)pchars);
不好意思,剛才提交的時候,**出錯了,內容全沒了,所以寫得比較精簡,如果對你有幫助,不仿"頂"一下,呵呵 ,,,,
ivan 2009-11-3 22:42 於冰城
Win32 API 與PB程式設計
1.如何使pb視窗總在最上層 通過setwindowpos函式吧視窗的顯示層次修改為hwnd topmost,就可以使指定視窗永遠不會被其他視窗覆蓋,該函式宣告為 function long setwindowpos long hwnd,long ord,long x,long y,long dx,...
掃雷程式 win32API
1 已實現功能 基本的掃雷方塊的展開,方塊周圍雷數的計算,方塊的標旗,勝負的判斷,難度的更改 2 未實現功能 控制台顯示剩餘標旗數量和當前所用時間,選單項的豐富 3 基本原理 使用一張二維int表儲存每個方格的數字資訊,其中9表示雷 將整個雷區 客戶區 按難度分割成方格,每個方格為乙個靜態控制項,用...
C 中匯入Win32 API函式
c 中匯入win32 api的方法 1 引用命名空間 using system.net.security using system.runtime.interopservices 2 dllimport wininet.dll charset charset.auto,setlasterror tr...