Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как поставить откат от OnMouseMove


Автор: megabist 2.5.2006, 19:26
Вот естьтри картинки на форме надо, чтобы при наведении они видоизменялись а когда с них курсор уходит возвращались в исходное состояние
(если поставить он маус мув на форму не работает он ккартинку тоже формой считает( если поставить по краям однопикселевские картинки то мышка их проскакивает (тоесть не реагирует))) 

Автор: Демо 2.5.2006, 21:17
Вот рещение на Delphi. Думаю, что реализовать на С не представит труда: http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&article_num=000286 

Автор: megabist 2.5.2006, 21:29
Цитата(Демо @ 2.5.2006,  21:17)
Вот рещение на Delphi. Думаю, что реализовать на С не представит труда: http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&article_num=000286

Дело в том, что в си++ нету события он маус лив((
я многое перепробывал..
*или я чего-то не понял?* 

Автор: Nemesis 2.5.2006, 23:47
Что-то я не пойму в чем проблема... Тебе нужно чтобы картинка видоизменялась когда над ней мышь? Просто в обработчике onMouseMove стваишь флагу true, типа да, мышь надо мной и по флагу изменяешь нужную картинку... 

Автор: _hunter 3.5.2006, 10:29
Цитата(megabist @  2.5.2006,  21:29 Найти цитируемый пост)
Дело в том, что в си++ нету события он маус лив((
я многое перепробывал..

не повериш -- в делфи его тоже нету...

Цитата(megabist @  2.5.2006,  21:29 Найти цитируемый пост)
*или я чего-то не понял?*

таки да 

Автор: megabist 3.5.2006, 13:42
Цитата(Nemesis @ 2.5.2006,  23:47)
Что-то я не пойму в чем проблема... Тебе нужно чтобы картинка видоизменялась когда над ней мышь? Просто в обработчике onMouseMove стваишь флагу true, типа да, мышь надо мной и по флагу изменяешь нужную картинку...

Бали это понятно как сделать так, чтоб он видел, что курсор НЕ на ним? И возвращал исходную картинку. 

Автор: Nemesis 3.5.2006, 13:50
Бали это понятно как сделать так, чтоб он видел, что курсор НЕ на ним? И возвращал исходную картинку
Дык ты каждый раз false`сишь флаг, после того, как обновил картинку, а true только когда mouse над image`ем. 

Автор: megabist 3.5.2006, 14:40
она тогда пока над ней мышь перерисовывается постоянно и диео мигает..(( 
и кстати попробуй написать пример к тому, что сам говоришь ... я скока не старался неасилил.... или я тя не так понял(( 

Автор: Nemesis 3.5.2006, 20:34
Просто не нужно постоянно перерисовывать и перезагружать image, вот код:

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

bool isOnImage;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  isOnImage = false;
  Image1->Picture->LoadFromFile("10.bmp");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  if(!isOnImage)
    Image1->Picture->LoadFromFile("7.bmp");
  isOnImage = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  if(isOnImage)
    Image1->Picture->LoadFromFile("10.bmp");
  isOnImage = false;
}
//---------------------------------------------------------------------------
 

Автор: megabist 4.5.2006, 09:11
Спасибо огромное за помощ надеюсь тоже когда-нибудь смогу помочь)) smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)