同じ値の char 同士を比較したのに値が違う,と言われる。signed と unsigned を比較していた。
ILS2 DirectPlay のイベントスレッド,終了のためにイベントをもう 1 つ用意する。
while(1) { // イベントを待つ HANDLE hHandles[2]; hHandles[0] = m_hDPEvent; hHandles[1] = m_hDPKillEvent; if(::WaitForMultipleObjects(2, hHandles, FALSE, INFINITE) == WAIT_OBJECT_0 + 1) { // 終了イベント return; } else { 処理 } }
のようにするとスッキリする。
VB から VC++ DLL を使う。VC++ で,MFC 拡張 DLL を作成し,
"func.h" #ifdef __cplusplus extern "C" { #endif int APIENTRY func(); #ifdef __cplusplus } #endif
"func.cpp" int APIENTRY func() { return 0; }
で公開する関数を作成。この中からはクラスも呼び出せる。
次に def ファイル。
"library.def" LIBRARY "DialUpCommon" DESCRIPTION 'DialUpCommon Windows Dynamic Link Library' EXPORTS func=XXXXXXXX
XXXXXXXX の部分は内部名。@ がたくさん付いてるやつ。
VB 側
Private Declare Function func Lib "library.dll" () As Long Private Sub Command1_Click() func End Sub
とする。その際,開発環境からは DLL をフルパスにするか,DLL をパスの通っている場所に置かなくてはダメだった。