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