_beginthread()の使用について
元々スレッドの生成を
CreateThread(NULL, 0, ThreadFunc, (LPVOID)¶m, 0, &dwID);
としていたのですが、
生成したスレッドがC言語のライブラリを利用する場合、
CreateThread()ではなく_beginthread()を使うとMSDNに記載されていました。
そこでプログラムを_beginthread()に書き換えたのですが、
『error C2440: '関数' : 'DWORD (__stdcall *)(LPVOID)' から 'void (__cdecl *)(void *)' に変換できません。』
『warning C4024: '_beginthread' : の型が 1 の仮引数および実引数と異なります。』
とのエラーが表示されてしまいます。
アドバイスをよろしくお願いします。
#include <windows.h>
#include <process.h>
#define APP_NAME TEXT("Sample_MainWindow")
typedef struct _ThreadParam {
HWND owner;
POINT point;
} ThreadParam;
DWORD WINAPI ThreadFunc(LPVOID vdParam) {
・
(省略)
・
}
LRESULT CALLBACK WindowProc(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
) {
ThreadParam param;
switch(uMsg) {
case WM_LBUTTONDOWN:
param.owner = hWnd;
param.point.x = LOWORD(lParam);
param.point.y = HIWORD(lParam);
_beginthread(ThreadFunc, 0, ¶m);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
お礼
ファイルではなく、レジストリのセキュリティですが、サンプルプログラムとしてはじゅうぶんに解析の価値がありそうです。 早速がんばってみようと思います。 ありがとうございます。