Следующее даст вам координаты мыши относительно вашего контроля. Например, это приводит к (0,0), если мышь находится над левым верхним углом элемента управления:
var coordinates = yourControl.PointToClient(Cursor.Position);
Для указателей всегда используйте % p
--- это формат спецификатор, специально разработанный для печати указателей в нужном формате. : -)
Я бы сделал это:
std::cout << p;
Если вы настроены на cstdio:
printf("%p", p);
printf имеет модуль форматирования% p, который я полагаю, стандартизировано:
printf( "%p", p );
, но поскольку вы используете C ++, ostreams уже перегружает вывод указателя:
#include <iostream>
using namespace std;;
class A {};
int main() {
A a;
cout << &a << endl;
}
производит:
0x22ff6f
Вы ищете строку форматирования % p
?
printf("%p", p);
Это даст шестнадцатеричный адрес, на который указывает указатель (и, я думаю, форматы NULL
и для вас).
Я бы сделал:
cout << p << endl;
Строки (одной кодировки) переносимы. Если вы хотите сравнить их как указатели, вам нужно сначала разобрать строку обратно на unsigned long
.
Что касается 128-битных систем, до них еще далеко. Используя 64 бита, вы можете напрямую адресовать 16,8 миллионов терабайт ОЗУ.
Это также можно сделать как
printf ("% # x", p);
Это обеспечит одинаковый формат (0x ...) на разных платформах.