WINAPIのスレッドについて教えてください
WINAPIのスレッドについて教えてください
スレッドを作成して写真をスライドショウー的に表示しようしていますが、
上手くいきません。
typedef struct _dataparam{
HWND hWnd;
HDC hSlidDC;
int iFileCount;
TCHAR szFile[100][MAX_PATH];
HBITMAP hBitmap[100];
}DataParam;
という構造体を作成して、各変数に必要な値を代入した後
BIT_SLIDというメッセージが来た場合Threadを作成。
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp)
{
static DataParam data={0};
case WM_CREATE:
data.hWnd=hWnd;
・
・
case BIT_SLID:
slidCheck=TRUE;
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)SlidThread,
(LPVOID)&data,0,&dwThreadId);
return 0;
Thread関数内でGetClientRectにより下記のように
Windowのサイズを測ろうとしましたが
rcには正しいWindowのサイズ格納されていません。
DWORD WINAPI SlidThread(LPVOID vdParam)
{
DataParam *SlidData;
RECT rc={0};
SlidData=(DataParam *)vdParam;
GetClientRect(SlidData->hWnd,&rc);
・
・
・
hWnd以外のiFileCountやszFile[100][MAX_PATH]の値を調べると
問題なく引き渡しているようなのですが、
rcのleft=0 light=459 top=760 bottom=-2142242063となっていました。
けれどThread関数内で
InvalidateRect(SlidData->hWnd,NULL,TRUE);
再描画を行います。
ちなみに下記の自作関数では問題なくWindowサイズを取得しております。
int MySetBitmap(HDC hNormalDC,DataParam *data)
{
GetClientRect(data->hWnd,&rc);
・
・
・
環境はMicrosoft Visual C++ 2008 Express Editionです
それと別件なのですが、デバックでローカルに表示される変数と
表示されない変数がありますがその違いを教えていただければ幸いです。
今回SlidDataは表示されません。
ご教授お願いします。
お礼
ありがとうございます^^