学习线程时遇到GetClientRect编译不过
好久没有编程了。。。
今天要用到线程的一个功能,拿起书来学习一下,光碟上的例子完全没有问题,但我新建一个,依样画瓢照抄,但在编译时没有通过,提示GetClientRect参数不对:
[BCC32 Error] ThreadFormUnit.cpp(20): E2034 Cannot convert 'void *' to 'HWND__ *'
[BCC32 Error] ThreadFormUnit.cpp(20): E2342 Type mismatch in parameter 'hWnd' (wanted 'HWND__ *', got 'void *')
例子中没有多少行代码,但我反复对照也找不出有什么不同,下面的复制过来的:
#include <vcl.h>
#pragma hdrstop
#include "ThreadFormUnit.h"
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TThreadForm *ThreadForm;
HANDLE Thread;
DWORD WINAPI ThreadFunc(LPVOID Param)
{
HANDLE MainWnd(Param);
RECT R;
GetClientRect(MainWnd, &R);
...
}
对照光碟的程序,连所有控件的名称都改相同还是不行,源程序是BCB5的,我用在RAD2010上,源程序可以编译过。
[解决办法]
工程选项中的某些设置有差异。
ThreadFormUnit.cpp的第20行附近是什么代码?