minimieren ueberschreiben
-
hallo leute
die frage ist kurz und knapp
wie kann ich die funktion fuer das minimieren mit einer eigenen ueberschreiben in einer dialogressource ?
ich hab hier n button fuer "minimieren in tray" - das wuerd ich gern auf das "normale" minimieren auf startleiste umlenken
danke fuer alle reaktionen {o;
-
Du kannst WM_SYSCOMMAND mit dem entsprechenden Minimize Code versenden.
-
und wo ? bei on init ?
ist das erste mal das ich direkt mit der dialog box arbeite - sonst hab ich immer die fenster manuell erstellt {jeff prosise}
-
Jetzt verstehe ich was nicht. Was hat OnInitDialog mit dem minimieren zu tun?
ShowWindiw(SW_MINIMIZE) geht natürlich auch.
-
ja wie gesagt, ich weiss doch nicht wo und wie ich das mit dem "WM_SYSCOMMAND" schreiben soll
ShowWindow wird zb ja gar nicht aufgerufen
.h filesclass COwnApp : public CWinApp { public: COwnApp(); virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() }; extern CSOwnApp theApp;class COwnDlg : public CDialog { public: COwnDlg(CWnd* pParent = NULL); enum { IDD = IDD_OWN_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung HICON m_hIcon; virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP().cpp files
BEGIN_MESSAGE_MAP(COwnApp, CWinApp) ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() CShutDownApp::COwnApp() { } COwnApp theApp; BOOL COwnApp::InitInstance() { InitCommonControls(); CWinApp::InitInstance(); SetRegistryKey(_T("Vom lokalen Anwendungs-Assistenten generierte Anwendungen")); COwnDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); return TRUE; }COwnDlg::COwnDlg( CWnd* pParent ) : CDialog( CSOwnDlg::IDD, pParent ) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } BEGIN_MESSAGE_MAP(COwnDlg, CDialog) ON_WM_PAINT() END_MESSAGE_MAP() BOOL COwnDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden } void COwnDlg::OnPaint() { if ( IsIconic() ){ CPaintDC dc( this ); SendMessage( WM_ICONERASEBKGND, reinterpret_cast< WPARAM >( dc.GetSafeHdc() ), 0 ); int cxIcon = GetSystemMetrics( SM_CXICON ); int cyIcon = GetSystemMetrics( SM_CYICON ); CRect rect; GetClientRect( &rect ); int x = ( rect.Width() - cxIcon + 1 ) / 2; int y = ( rect.Height() - cyIcon + 1 ) / 2; dc.DrawIcon( x, y, m_hIcon ); } else CDialog::OnPaint(); } HCURSOR COwnDlg::OnQueryDragIcon() { return static_cast<HCURSOR>( m_hIcon ); }das is was ich hab {eigene methoden und members weggelassen}
wo und wie komm ich nu an die funktion fuer den minimieren button
-
Hallo,
ich würde die Nachricht fürs minimieren einfach abfangen und entsprechend anders verarbeiten?
Gruß
Gerald
-
ja das will ich ja machen, aber ich weiss nicht wie
-
Du musst einfach einen Handler für WM_SYSCOMMAND zu Deinem Dialog hinzufügen. Das machst Du mit dem Wizard.
-
ein wizard dafuer hab ich nicht gefunden aber habs trotzdem hinbekommen
BEGIN_MESSAGE_MAP(COwnDlg, CDialog) ON_WM_PAINT() ON_WM_SYSCOMMAND() // hinzugefuegt END_MESSAGE_MAP()class COwnDlg : public CDialog { public: COwnDlg(CWnd* pParent = NULL); enum { IDD = IDD_OWN_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung HICON m_hIcon; virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnSysCommand( UINT nID, LPARAM lParam ); // hinzugefuegt DECLARE_MESSAGE_MAP()// erstellt void COwnDlg::OnSysCommand( UINT nID, LPARAM lParam ) { switch( nID ) { case SC_MINIMIZE: OnMini(); break; case SC_CLOSE: COwnDlg::OnClose(); break; default: break; } }danke fuer den schubs in die richtige richtung {=