Доброго времени суток. Не могу понять что не так с приведенным ниже кодом. Если использовать его как он есть, то с определением имени компонента наблюдаются огромные тормоза. Скажем курсор уже над формой, а он все имя компонента какого-нибудь показывает(имеющегося на форме). Если убрать FindDragTarget а раскоментить
//hWnd = WindowFromPoint(*CurPoint);
//sprintf(buff,"0x%X",hWnd);
//Memo1->Lines->Add((AnsiString)buff);
//GetClassName(hWnd,buff,sizeof(buff));
//Label3->Caption = (AnsiString)buff;
то он может показывать вообще не вообразимые классы.
#include
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i=0;
POINT *CurPoint;
char buff[128];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
CurPoint = new POINT;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
//HWND hWnd;
TControl *control;
GetCursorPos(CurPoint);
::ScreenToClient(Form1->Handle,CurPoint);
Label1->Caption = CurPoint->x;
Label2->Caption = CurPoint->y;
if (Msg.message == WM_MOUSEMOVE)
{
i++;
Caption = i;
control = FindDragTarget(*CurPoint, true);
if (control)
{
Memo1->Lines->Add(control->Name);
}
//hWnd = WindowFromPoint(*CurPoint);
//sprintf(buff,"0x%X",hWnd);
//Memo1->Lines->Add((AnsiString)buff);
//GetClassName(hWnd,buff,sizeof(buff));
//Label3->Caption = (AnsiString)buff;
}
}
//---------------------------------------------------------------------------
и еще вопрос сразу как говорится до кучи
зачем перед ScreenToClient нужно ставить двойное двоеточие ::? Без него не работает