// DlgWindow definitions *******************************
// Duplicates TWindow somewhat
#include <mywin.h>
#pragma hdrstop
DlgWindow::DlgWindow(Object *Parent, int Id) : Dialog(Parent,Id)
{
Menu = NULL;
OldStyle = 0;
}
void DlgWindow::AssignMenu(LPSTR menu)
{
HMENU OldMenu,hM;
if (HIWORD(Menu)) delete[] Menu;
if (HIWORD(menu)) Menu = strdup(menu);
else Menu = menu;
if (hWnd) {
OldMenu=GetMenu(hWnd);
hM=menu ? LoadMenu(App::hInstance,menu) : (HMENU) NULL;
SetMenu(hWnd,hM);
if (OldMenu && !Menu) Resize( -GetSystemMetrics(SM_CYMENU) );
if (!OldMenu && Menu) Resize( GetSystemMetrics(SM_CYMENU) );
if (OldMenu) DestroyMenu(OldMenu);
}
}
void DlgWindow::AssignMenu(int MenuId)
{
AssignMenu((LPSTR)MAKEINTRESOURCE(MenuId));
}
BOOL DlgWindow::Create()
{
BOOL ret=Dialog::Create();
if (ret && Menu)
{
HMENU hM=LoadMenu(App::hInstance,Menu);
SetMenu(hWnd,hM);
// resize dialog
Resize(GetSystemMetrics(SM_CYMENU));
}
return ret;
}
void DlgWindow::ShowTitleBar()
{
Style=GetWindowLong(hWnd,GWL_STYLE); // need this ?
Style|=WS_CAPTION | OldStyle;
SetWindowLong(hWnd,GWL_STYLE,Style);
// resize dialog
Resize( GetSystemMetrics(SM_CYCAPTION) );
}
void DlgWindow::HideTitleBar()
{
Style=GetWindowLong(hWnd,GWL_STYLE); // need this ?
OldStyle=Style & ( WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
Style&=~( (WS_CAPTION & ~WS_BORDER) | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
SetWindowLong(hWnd,GWL_STYLE,Style);
// resize dialog
Resize( -GetSystemMetrics(SM_CYCAPTION) );
}
void DlgWindow::Resize(int h)
{
RECT rc;
GetWindowRect(hWnd,&rc);
int height=rc.bottom-rc.top+h;
SetWindowPos(hWnd,NULL, rc.left, rc.top-h, rc.right-rc.left, height , SWP_NOZORDER | SWP_DRAWFRAME);
ShowWindow(hWnd,SW_SHOW);
}
// DlgWindow definitions *******************************
// Duplicates TWindow somewhat
#include <mywin.h>
#pragma hdrstop
DlgWindow::DlgWindow(Object *Parent, int Id) : Dialog(Parent,Id)
{
Menu = NULL;
OldStyle = 0;
}
void DlgWindow::AssignMenu(LPSTR menu)
{
HMENU OldMenu,hM;
if (HIWORD(Menu)) delete[] Menu;
if (HIWORD(menu)) Menu = strdup(menu);
else Menu = menu;
if (hWnd) {
OldMenu=GetMenu(hWnd);
hM=menu ? LoadMenu(App::hInstance,menu) : (HMENU) NULL;
SetMenu(hWnd,hM);
if (OldMenu && !Menu) Resize( -GetSystemMetrics(SM_CYMENU) );
if (!OldMenu && Menu) Resize( GetSystemMetrics(SM_CYMENU) );
if (OldMenu) DestroyMenu(OldMenu);
}
}
void DlgWindow::AssignMenu(int MenuId)
{
AssignMenu((LPSTR)MAKEINTRESOURCE(MenuId));
}
BOOL DlgWindow::Create()
{
BOOL ret=Dialog::Create();
if (ret && Menu)
{
HMENU hM=LoadMenu(App::hInstance,Menu);
SetMenu(hWnd,hM);
// resize dialog
Resize(GetSystemMetrics(SM_CYMENU));
}
return ret;
}
void DlgWindow::ShowTitleBar()
{
Style=GetWindowLong(hWnd,GWL_STYLE); // need this ?
Style|=WS_CAPTION | OldStyle;
SetWindowLong(hWnd,GWL_STYLE,Style);
// resize dialog
Resize( GetSystemMetrics(SM_CYCAPTION) );
}
void DlgWindow::HideTitleBar()
{
Style=GetWindowLong(hWnd,GWL_STYLE); // need this ?
OldStyle=Style & ( WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
Style&=~( (WS_CAPTION & ~WS_BORDER) | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
SetWindowLong(hWnd,GWL_STYLE,Style);
// resize dialog
Resize( -GetSystemMetrics(SM_CYCAPTION) );
}
void DlgWindow::Resize(int h)
{
RECT rc;
GetWindowRect(hWnd,&rc);
int height=rc.bottom-rc.top+h;
SetWindowPos(hWnd,NULL, rc.left, rc.top-h, rc.right-rc.left, height , SWP_NOZORDER | SWP_DRAWFRAME);
ShowWindow(hWnd,SW_SHOW);
}