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

Rispondi quotando