Win32APIで作成したDLLをC#.NETで使用した時のDLL内の関数の動作について
いつもお世話になっております。
今回ご教授頂きたい内容なのですが、
Win32APIで作成したDLLをC#.NETで使用した時のDLL内の関数の動作についておききします。
下記サイトで公開されている「ビットマップ形状に合わせてリージョンを作成する」CreateRgnFromBitmap関数についてなのですが、
http://orangeknowledge.jpn.org/tips/sdk001.html
Win32APIでこの関数をDLL化したものをWin32APIで暗黙的リンク、明示的リンクで利用した場合は正常にCreateRgnFromBitmap関数が正常に動作するのですが、C#.NETで同DLLを利用した時に、関数を呼ぶ事はできますがなぜか正常に動作しません。
デバッグモードで処理内容をみてみたのですが、
// 一行分画像データを DIB で取り出す(bmpなので下から取り出す)
GetDIBits(hDC, hBitmap, bm.bmHeight - y, 1, pScanData, (LPBITMAPINFO)&bi, DIB_RGB_COLORS);
の部分でpScanData配列に一行分の画像データが正常に入っていませんでした。
そのためGetDIBitsの次に行う判定
// 一行分の透明/非透明の変化点を調査する
for (int x = 0; x < bm.bmWidth; x++){
if (pScanData[x] != dwTransColor){ // 透明色でなければ
・・・省略・・・
で正常に判定が行われず引数としてわたされている「DWORD dwTransColor」透明色部分を正常に判定できていませんでした。
なぜWin32APIでは正常に動作するのにC#.NETでは正常に動作しないのでしょうか?
色々と試してみたのですがいっこうに分かりません。
ご教授よろしくお願い致します。