函数调用问题


Thread=CreateThread(NULL,0,即将调用函数B 这里应该填入什么内容?,NULL,0,&ThreadID);

函数B:
DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)

在创建线程参数中 应该填入什么?
十分感谢

13 个解决方案

#1


Thread=CreateThread(NULL,0,即将调用函数B 这里应该填入什么内容?,NULL,0,&ThreadID); 

函数B: 
DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 

在创建线程参数中 应该填入什么? 
十分感谢

直接以Create为第三个参数是不行的,应该再建一个函数将DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 包装起来。
DWORD WINAPI ThreadProc( LPVOID lpParameter)
{
   Create....
   return 0;
}

Thread=CreateThread(NULL,0,ThreadProc, NULL,0,&ThreadID); 

如果是在windows下编程,CreateThread相关的例子程序可以很容易的找到的。

#2


引用楼主 NorthPBear 的帖子:
Thread=CreateThread(NULL,0,即将调用函数B 这里应该填入什么内容?,NULL,0,&ThreadID); 

函数B: 
DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 

在创建线程参数中 应该填入什么? 
十分感谢


把Create函数改一下,或者另外提供一个函数封装它。
说一下修改Create函数的方法:
typedef struct
{
    HINSTANCE hInstance;
    HINSTANCE hPrevInstnce;
    PSTR      szCmdLine;
    int       iCmdShow;
}PARAM_STRUCT;

DWORD WINAPI Create(LPVOID lpParam)
{
    PARAM_STRUCT* pStruct = (PARAM_STRUCT*)lpParam;
//    pStruct->hInstance...
//    pStruct->szCmdLine....
}

创建线程:
PARAM_STRUCT ps = {初始化你的数据}; //或者PARAM_STRUCT *pPS = new PARAM_STRUCT,然后赋值
Thread=CreateThread(NULL,0,Create, &ps ,0,&ThreadID); 

#3


Thread=CreateThread(NULL,0,即将调用函数B 这里应该填入什么内容?,NULL,0,&ThreadID);

即将调用函数B 这里应该填入什么内容?//....线程函数名

#4


引用 1 楼 goke 的回复:
直接以Create为第三个参数是不行的,应该再建一个函数将DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 包装起来。
DWORD WI…


这个我倒是试过 可是不知道调用的时候参数该写什么

/*DWORD WINAPI Call(LPVOID)
{
Create(这里面又该写什么?);//似乎我写什么错什么
return (0);
}*/

#5


引用 3 楼 lala_benben 的回复:
Thread=CreateThread(NULL,0,即将调用函数B 这里应该填入什么内容?,NULL,0,&ThreadID);

即将调用函数B 这里应该填入什么内容?//....线程函数名



直接写那个函数名 必然不对.

我要调用的是DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
直接写Create 肯定要出错啦.

#6


函数是啥参数是要看你做什么的。第一步你必须了解各个参数含义是啥,然后根据你需求填参数。想别人给你个用之海内都可以的答案,这是不可能的。编程哪有这么简单。要说这里该填什么,估计神仙也不知道

#7


一楼,三楼,怎么不点评一下我二楼的~

#8


二楼的方法 好像可用.但是我还没调试出来.

说一下我要调用的函数

DWORD WINAPI Create(LPVOID lpParam)
{
mcdef* pStruct = (mcdef*)lpParam;
static TCHAR szAppName[]=TEXT("Test");
HWND hwnd;

MSG msg;

WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;

wndclass.lpfnWndProc=WndProc;

wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName="Thread";
wndclass.lpszMenuName=NULL;

RegisterClass(&wndclass);

hwnd=CreateWindow("Thread",TEXT("Test"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while(GetMessage (&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}


事实上就是一个CreateWindow的函数

#9


...你让线程调Create函数当然要..写函数名..至于Create的参数可以通过CreateThread的第4个参数传给它...

#10


嗯,看你那四个参数就是WinMain的参数

#11


那您的意思是 定义一个结构体,然后利用结构体把参数传进去?

刚才那个代码有点儿问题 测试时候 没改回去 重发一下

DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("SDK");
HWND hwnd;

MSG msg;

WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;

wndclass.lpfnWndProc=WndProc;

wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName="Thread";
wndclass.lpszMenuName=NULL;

RegisterClass(&wndclass);

hwnd=CreateWindow("Thread",TEXT("Test"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while(GetMessage (&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

就是想调用这个函数来着

#12


DWORD WINAPI Create(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 
把线程参数定义为一个结构,然后传入指针即可。2楼的方法是可行的!

#13


多谢楼上 【云淡风轻】 大哥指点.

小弟昨天已经做成功了.

十分感谢关注
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告