2012-03-14 1 views
0

それは、オートデスクのRevit Architectureで行われているように私は、ポップアップ画像のプレビューウィンドウを作成しようとしている:ポップアップイメージの作成方法は? wxWidgetsの

see how it looks in Revit

ポップアップ画像の動作は次のとおりです。

  1. マウスは500のために停止した場合マウスカーソルの近くにフルサイズのポップアップイメージが表示されます。
  2. ポップアップイメージはモーダルダイアログではないため、メインウィンドウ(wxDialog)のコントロールは引き続き有効です。
  3. ポップアップウィンドウがマウスの動きで消えます。

私はそれを試みましたが、失敗しました。 最初にwxStaticBitmapwxDialogに置き、ShowModal()を使用して、このフルサイズの画像を表示します。それは素晴らしいですが、それはモーダルなので、メインウィンドウは無効になります。 私はこのダイアログをモーダルではないようにしようとしましたが、それをやろうとするとメインウィンドウが上がり(メインウィンドウはモーダルです)、イメージは消えます。

upd。 は今、私のコード:

class PictureFrame: public wxPopupTransientWindow 
{ 
    wxStaticBitmap *m_picture; 
public: 
    PictureFrame(wxWindow *parent); 
    ~PictureFrame(); 
}; 

パネルのコードの構造は、このようなものです:

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() 
}; 

パネルはメインのモーダルダイアログに配置されています

class MaterialsFrame: public wxDialog { 
    MaterialsPane* m_materialsPane; 
public: 
    MaterialsFrame(wxWindow* parent, wxWindowID id = wxID_ANY); 
    ~MaterialsFrame(); 
}; 

が、それは完全ではないが助けました。画像はマウスカーソルの下ではなくその近くに表示されるため(私の質問の画像のように)、ポップアップウィンドウはマウスの動きを捕らえることができません。私はメインダイアログでマウスの動きをキャッチしようとしましたが、ポップアップウィンドウでフォーカスがとられたので失敗しました。

私の目標は、マウスの動きの後にポップアップを閉じることです。

答えて

0

「失敗」というコードを投稿してください。あなたが何をしているのかについての情報がないときは、具体的なアドバイスをするのは難しいです。

あなたはwxPopupWindowを見ましたか? http://docs.wxwidgets.org/trunk/classwx_popup_window.html

個人的には、私自身がロールバックする方が簡単です。ここで私は働いている1が今、このポップアップを作るために

cNewDataPopup::cNewDataPopup( cPatDataset& data) 
    : wxDialog(NULL,-1,L"New data",wxPoint(200,200),wxSize(570,242), 
     wxDEFAULT_DIALOG_STYLE|wxSTAY_ON_TOP) 
    , myData(data) 
{ 
    ... 
    Show(); 
} 

をどのように見えるかだ単にコンストラクタを呼び出す、表示されます。

イメージを表示して渡し、属性に格納し、イメージをクライアント領域に描画してペイントイベントを処理したいとします。 'クラスPictureFrame:公共wxPopupTransientWindow { ....};'

+0

私はこの試み それは助けたが完全ではなかった。画像はマウスカーソルの下ではなくその近くに表示されるため(私の質問の画像のように)、ポップアップウィンドウはマウスの動きを捕らえることができません。私はメインダイアログでマウスの動きをキャッチしようとしましたが、ポップアップウィンドウでフォーカスがとられたので失敗しました。 私の目標は、マウスの動きの後にポップアップを閉じることです。 – Pillar

+0

新しい質問があるようです。質問を編集するか、新しい質問をしてください。失敗したコードを含めることを忘れないでください。あなたの最初の質問に対する私の答えが役に立ったら、それを投票してください、あるいはそれを受け入れてください。 – ravenspoint

+0

トピックが更新されましたが、まだ動作しません – Pillar

関連する問題