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