Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455

    [C++/MFC] Ridimensionare\riposizionare controlli

    in C++ MFC è presente un modo per inserire i controlli con l'impostazione dock?(intendo una cosa tipo il wizard di C# dove puoi usare l'opzione dockable sugli oggetti)


    questo è il codice che sto usando per inserire la Tabella:


    codice:
    
    	TabRight.Create(WS_CHILD | WS_VISIBLE | CBRS_ALIGN_RIGHT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC , CRect(0, 0, 200, 800), this, 3);
    	TabRight.MoveWindow(WindowSize.right - WindowSize.left - 200, 0, 200, 800);

    vorrei che quando ridimensiono la finestra del mio programma tutti i pulsanti siano riposizionati.


    Ovviamente ho provato a farlo in maniera manuale ma non riesco ad ottenere nessuna modifica.


    Questo è il codice della finestra:


    codice:
    
    class _Window : public CFrameWnd
    {
    public:
    	_Window()
    	{
    		Create(NULL, L"engine_prova");
    		_hWnd = this->GetSafeHwnd();
    		EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);
    	}
    
    
    	CTabCtrl TabRight;
    
    
    	HWND _hWnd;
    	void DrawInterface();
    	void onResize();
    	CRect WindowSize;
    	DECLARE_MESSAGE_MAP()
    };
    
    
    BEGIN_MESSAGE_MAP(_Window, CFrameWnd)
    	ON_WM_SIZE(10000, &_Window::onResize)
    	ON_WM_DWMWINDOWMAXIMIZEDCHANGE(10000, &_Window::onResize)
    	ON_WM_SIZING(10000, &_Window::onResize)
    END_MESSAGE_MAP()
    
    
    void _Window::onResize()
    {
    	TabRight.MoveWindow(WindowSize.right - WindowSize.left - 200, 0, 200, 800);
    	MessageBox(L"Size Changed");
    }
    
    
    class AppCore : public CWinApp
    {
    	_Window *m_window;
    public:
    	BOOL InitInstance()
    	{
    		m_window = new _Window();
    		GetWindowRect(m_window->GetSafeHwnd(), m_window->WindowSize);
    		m_window->DrawInterface();
    		m_pMainWnd = m_window;
    		m_pMainWnd->ShowWindow(1);
    		MSG msg;
    
    
    		while (TRUE)
    		{
    			while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    			{
    				TranslateMessage(&msg);
    				DispatchMessage(&msg);
    			}
    
    
    			if (msg.message == WM_SIZING)
    			{
    				GetWindowRect(m_window->GetSafeHwnd(), m_window->WindowSize);
    				m_window->TabRight.MoveWindow(m_window->WindowSize.right - m_window->WindowSize.left - 200, 0, 200, 800);
    			}
    
    
    			if (msg.message == WM_QUIT)
    				break;
    		}
    		return msg.wParam;
    	}
    };

  2. #2
    Che io sappia MFC non fornisce alcun layout manager di default, anche se cercando su Internet se ne trovano molti. In ogni caso, a mio parere scrivere applicazioni MFC nel 2014 è abbastanza un atto di masochismo...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    Tu per esempio cosa useresti per creare un programma con interfaccia grafica windows in c++?

  4. #4
    Qt. Non credo che attualmente ci sia di meglio in giro per sviluppo GUI C++ (e non solo) in termini di qualità delle API, documentazione e ampiezza del framework (ma più o meno qualunque cosa è meglio di MFC).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.