G Kumar P Ответов: 2

Как установить положение элемента управления edit в MFC с помощью точки


CEdit* pEditControl = (CEdit*)GetDlgItem(IDC_ID);

POINT  CaretPos;
::GetCaretPos(&CaretPos);

pEditControl->SetSel(CaretPos.x, CaretPos.y);


Что я уже пробовал:

Может ли кто-нибудь помочь мне с этим

2 Ответов

Рейтинг:
2

Rick York

Проверьте документацию : Класс CEdit | Microsoft Docs[^]

Ни переопределение принимает X-Y позиции.

Вы можете вызвать функцию call CharFromPos (), чтобы получить позицию символа из точки. Затем вызовите SetSel().

Это есть в документах.


G Kumar P

Привет Рик
Спасибо за ответ я хочу установить положение курсора в текущее положение x,y, как мы можем это сделать.

Rick York

сначала позвони Чарфромпосу.

Рейтинг:
2

Yofoo

just set position of cursor in edit, Other way except CharFromPos 

you can use mouse_event(SendInput) to click edit
also you can sendmessage(mouse message) to edit

example:

xxxxxx()
{
	POINT		pt;

	GetCursorPos(&pt);
	NSys::InputMouseClick(pt.x, pt.y, 0, TRUE);
	Sleep(10);
	NSys::InputMouseClick(pt.x, pt.y, 0, FALSE);
}


BOOL	NSys::InputMouseClick(int x, int y, int nButton, BOOL bDown)
{
	INPUT		input;
	BOOL		bRetVal;
	int			nScrW, nScrH;

	nScrW = GetSystemMetrics(SM_CXSCREEN);
	nScrH = GetSystemMetrics(SM_CYSCREEN);
	x = (x)*(65536-1)/(nScrW-1);
	y = (y)*(65536-1)/(nScrH-1);
	input.type				= INPUT_MOUSE;
	input.mi.dwExtraInfo	= NULL;
	input.mi.dx				= x;
	input.mi.dy				= y;
	input.mi.mouseData		= 0;
	input.mi.time			= GetTickCount();
	input.mi.dwFlags		= MOUSEEVENTF_ABSOLUTE;
	switch(nButton)
	{
	case 0:	input.mi.dwFlags |= bDown ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP;		break;
	case 1:	input.mi.dwFlags |= bDown ? MOUSEEVENTF_RIGHTDOWN : MOUSEEVENTF_RIGHTUP;	break;
	case 2:	input.mi.dwFlags |= bDown ? MOUSEEVENTF_MIDDLEDOWN : MOUSEEVENTF_MIDDLEUP;	break;
	default:	assert(0);	return FALSE;
	}
	bRetVal = SendInput(1, &input, sizeof(input));
	return bRetVal;
}