WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Надо сдвинуть кнопку на 10 пикселов влево (MSVC6)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Надо сдвинуть кнопку на 10 пикселов влево (MSVC6)
HOMO_PROGRAMMATIS опубликован 12-11-2001 20:55 MSK   Click Here to See the Profile for HOMO_PROGRAMMATIS   Click Here to Email HOMO_PROGRAMMATIS  
Здравствуйте!
Люди, вроде всё просто, но я уже так намучился! (MSVC6)
Всё что надо - передвинуть в своём диалог-окне кнопку с известным ID на Х пикселов влево. У меня какая-то лажа с экранными-клиентскими координатами, по моему. Плиз, напишите кусочек кода, очень прошу!
SUnteXx опубликован 13-11-2001 00:44 MSK     Click Here to See the Profile for SUnteXx  Click Here to Email SUnteXx     
В диалоге используются другая система координат, чем в окне!(
Врать не буду какая система координат у них, но точно знаю что другая, не в пикселях!(

Попробуйте сделать так:

RECT R;
HWND hWndButton = GetDlgItem(hDlg, IDC_BUTTON);
GetWindowRect(hWndButton, &R);
R.left += 10;
R.right +=10;
MoveWindow(hWndButton, R.left, R.top, R.right-R.left, R.bottom - R.top, TRUE);

Вроде бы все! У меня все контролы в диалоге так двигаются!

DmitryRyvkin опубликован 13-11-2001 07:18 MSK     Click Here to See the Profile for DmitryRyvkin  Click Here to Email DmitryRyvkin     
По-моему, надо иначе, а именно -

RECT R;
HWND hWndButton = GetDlgItem(hDlg, IDC_BUTTON1);
GetWindowRect(hWndButton, &R);
int width=R.right-R.left, height=R.bottom-R.top;
POINT pnt={R.left+10,R.top};
ScreenToClient(hDlg,&pnt);
MoveWindow(hWndButton, pnt.x, pnt.y, width, height, TRUE);

ScreenToClient нужна т.к. ф-ция GetWindowRect дает координаты в коорд-ах экрана,
а MoveWindow - требует клиентских координат (для child окон, кнопка думаю здесь child будет)
Ну и POINT для нее же понадобился.
Что же касается систем координат диалога - они совершенно такие же, как и для
других окон.Просто Dialog Editor на статус баре показывает не пиксели а нечто
иное, связанное с текущим шрифтом, но это другая тема.

SUnteXx опубликован 13-11-2001 11:35 MSK     Click Here to See the Profile for SUnteXx  Click Here to Email SUnteXx     
2DmitryRyvkin:
Вы правы, я совсем забыл о ScreenToClient!
Просто я в своей проге двигаю контролы изходя из RECT'a клиентской области!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.