Je suis en train de faire une fenêtre de prévisualisation d'image contextuelle comme il est fait dans Autodesk Revit Architecture:Comment faire une image popup? wxWidgets
Le comportement de l'image pop-up est:
- Lorsque la souris arrête pour 500 millisecondes sur l'image tronquée, une image contextuelle pleine taille apparaît près du curseur de la souris. L'image contextuelle n'est pas une boîte de dialogue modale, par conséquent les contrôles de la fenêtre principale (wxDialog) sont toujours activés.
- La fenêtre contextuelle disparaît lors du mouvement de la souris.
J'ai essayé de le faire, mais j'ai échoué. D'abord je mets wxStaticBitmap
sur wxDialog
et utilise ShowModal()
pour afficher cette image en taille réelle. Cela fonctionne très bien mais comme c'est Modal, la fenêtre principale devient désactivée. J'ai essayé de rendre cette boîte de dialogue non modale, mais quand j'essaye de le faire, la fenêtre principale augmente (la fenêtre principale est modale) et l'image disparaît.
mise à jour. Maintenant, mon code:
class PictureFrame: public wxPopupTransientWindow
{
wxStaticBitmap *m_picture;
public:
PictureFrame(wxWindow *parent);
~PictureFrame();
};
structure du code du panneau est comme ceci:
class MaterialsPane: public wxPanel
{
PictureFrame* m_popup;
wxTimer* m_timer;
public:
MaterialsPane(wxWindow* parent);
~MaterialsPane();
void OnTimer(wxTimerEvent& event);
void OnMouseMove(wxMouseEvent& event);
....
DECLARE_EVENT_TABLE()
};
Panel est placé dans le principal dialogue modale:
class MaterialsFrame: public wxDialog {
MaterialsPane* m_materialsPane;
public:
MaterialsFrame(wxWindow* parent, wxWindowID id = wxID_ANY);
~MaterialsFrame();
};
il a aidé, mais pas complètement. Comme l'image n'apparaît pas sous le curseur de la souris mais à proximité (comme dans l'image de ma question), la fenêtre contextuelle ne peut pas intercepter les mouvements de la souris. J'ai essayé d'attraper les mouvements de la souris dans la boîte de dialogue principale, mais cela a échoué, car la mise au point est effectuée par une fenêtre contextuelle.
Mon but est de fermer la popup après tout mouvement de la souris.
J'ai essayé ceci: 'classe PictureFrame: wxPopupTransientWindow publique { .... };' cela a aidé mais pas complètement. Comme l'image n'apparaît pas sous le curseur de la souris mais à proximité (comme dans l'image de ma question), la fenêtre contextuelle ne peut pas intercepter les mouvements de la souris. J'ai essayé d'attraper les mouvements de la souris dans la boîte de dialogue principale, mais cela a échoué, car la mise au point est effectuée par une fenêtre contextuelle. Mon but est de fermer la popup après tout mouvement de la souris. – Pillar
Vous semblez avoir de nouvelles questions. S'il vous plaît modifier votre question, ou en demander un nouveau. N'oubliez pas d'inclure le code qui 'échoue'. Si ma réponse à votre première question était utile, veuillez voter, ou même l'accepter. – ravenspoint
sujet mis à jour, ne fonctionne toujours pas comme j'ai besoin – Pillar