【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19654

マネージコードからアンマネージコードにキャストできるの?
投稿者---ken(2005/01/30 20:14:23)
http://homepage3.nifty.com/MIDI-EDITOR/


はじめまして。VC++.NETをはじめたばかりの初心者です。
スレッド作成でマネージコード問題で教えてください。
クラスに __gc でマネージコード宣言しクラス実装は、
すべてポインタ記述が必要だということはわかったのですが、
プログラムがスレッドクラスのため、マネージコードをthisポインタで
スレッドの引数に引き渡す必要があるんですが、マネージ、アンマネージ問題
でうまくキャストできないようです。

//---------------------------------------------------------------------------
//スレッド用引数
__gc class TParam
{
};
//---------------------------------------------------------------------------
//スレッド作成
bool threadClass::CreateThread(void* thread ,void* bThis)
{
//現在のスレッドのハンドルと解釈される特別な定数(疑似ハンドル)を返す
mainthread=GetCurrentThread();

//_beginthreadexの戻り値はunsigned longなのでHANDLE型でキャストする必要がある
hThread = (HANDLE)_beginthreadex(NULL ,0 ,(THREADFUNC)thread ,(LPVOID)&param ,0,0);

return true;
}

//---------------------------------------------------------------------------

(LPVOID)&param 部分がVOID* として宣言してますので、vc++,Netはマネージ
コードで書かれてるため、キャストが必要なのですが、どう書けばいいでしょうか? 
よろしくお願いします。





この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧