窗口样式
新: 作品简介: 本文演示了通过在显示的表单视图中选择各种选项,在运行时创建不同样式窗口的技术 特点: 您可以创建以下类型的窗口 重叠 孩子 弹出 标准对话框 您还可以选择创建菜单 窗口也可以创建 最小化 Maxmiized 规模 窗口可以有以下按钮 最大化 最小化 系统菜单 你可以用默认的大小和默认的位置创建窗口,或者指定左边,顶部的值,以及指定的宽度和高度 注意: 如果您继续单击“创建窗口”按钮,窗口将创建一个在另一个多次,您继续单击,并将不得不关闭每个窗口,通过单击关闭按钮多次 关于代码: 隐藏,收缩,复制Code
//
// Depending on the Type of Window to be created
// we enable of disble various options as below
//
// If you select the Overlapped Window option
// the following checkboxes are Enabled / Disabled
void CMainForm::SetOverlappedProperties()
{
GetDlgItem(IDC_DIALOGFRAME)->EnableWindow(FALSE);
GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(TRUE);
GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(TRUE);
GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);
GetDlgItem(IDC_DEFAULT_TOPLEFT)->EnableWindow(TRUE);
GetDlgItem(IDC_DEFAULT_WIDTHHEIGHT)->EnableWindow(TRUE);
GetDlgItem(IDC_TOP)->EnableWindow(FALSE);
GetDlgItem(IDC_LEFT)->EnableWindow(FALSE);
GetDlgItem(IDC_WIDTH)->EnableWindow(FALSE);
GetDlgItem(IDC_HEIGHT)->EnableWindow(FALSE);
m_DefaultTopLeft = m_DefaultWidthHeight = TRUE;
m_MinimizeBox = m_MaximizeBox = m_SystemMenu =
m_Overlapped = TRUE;
m_ToSize = TRUE;
m_Popup = m_Child = FALSE;
UpdateData(FALSE);
}
//
// If you select the Child Window option
// the following checkboxes are Enabled / Disabled
//
void CMainForm::SetChildProperties()
{
m_MinimizeBox = m_MaximizeBox = m_SystemMenu = m_Overlapped =
m_Popup = FALSE;
m_ToSize = TRUE;
m_Child = TRUE;
GetDlgItem(IDC_DIALOGFRAME)->EnableWindow(TRUE);
GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(FALSE);
GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(FALSE);
GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(FALSE);
GetDlgItem(IDC_CAPTION)->EnableWindow(TRUE);
m_Caption = FALSE;
UpdateData(FALSE);
}
//
// If you select the Popup Window option
// the following checkboxes are Enabled / Disabled
//
void CMainForm::SetPopupProperties()
{
m_MinimizeBox = m_MaximizeBox = m_SystemMenu =
m_Overlapped = m_Child = FALSE;
m_Popup = TRUE;
m_ToSize = TRUE;
m_SystemMenu = TRUE;
GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(TRUE);
GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(TRUE);
GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);
GetDlgItem(IDC_CAPTION)->EnableWindow(TRUE);
m_Caption = FALSE;
UpdateData(FALSE);
}
//
// If you select the Standard Window option
// the following checkboxes are Enabled / Disabled
//
void CMainForm::SetStandardDialogProperties()
{
CheckDlgButton(IDC_CAPTION, 1);
GetDlgItem(IDC_CAPTION)->EnableWindow(TRUE);
CheckDlgButton(IDC_SYSTEM_MENU,1);
GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);
GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(TRUE);
GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(TRUE);
GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);
CheckDlgButton(IDC_MAXIMIZE_BOX, 0);
CheckDlgButton(IDC_MINIMIZE_BOX, 0);
CheckDlgButton(IDC_MODAL_DIALOG_FRAME, 1);
GetDlgItem(IDC_DEFAULT_WIDTHHEIGHT)->EnableWindow(FALSE);
GetDlgItem(IDC_DEFAULT_TOPLEFT)->EnableWindow(FALSE);
GetDlgItem(IDC_WIDTH)->EnableWindow(TRUE);
GetDlgItem(IDC_HEIGHT)->EnableWindow(TRUE);
GetDlgItem(IDC_TOP)->EnableWindow(TRUE);
GetDlgItem(IDC_LEFT)->EnableWindow(TRUE);
UpdateData(TRUE);
}
让我们看看在您选择了必要的选项并单击“创建窗口”按钮之后,在运行时创建窗口的代码 隐藏,收缩,复制Code
//
// First of all we have to register the class
// the name of the Class is specified as a String
// Name of the class is passed to the my member
// function eg RegisterClass("MyWindowStyles")
//
//
BOOL CMainForm::RegisterClass(CString stringClass)
{
WNDCLASS wndclass;
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = AfxGetInstanceHandle();
wndclass.hIcon = LoadIcon(NULL, _T(""));
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW );
wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = stringClass;
if( !AfxRegisterClass( &wndclass ))
{
AfxMessageBox("Error Registering Class\n");
return FALSE;
}
return TRUE;
}
//
// Since the Window created at run-time cannot have its
// Messages in the Message Map of the Application , we
// have the following procedure , which takes care
// of the messages in the newly created Window
//
// Note : WndProc is passed as the Windows procedure
// to the above Registered Class as
//
// wndclass.lpfnWndProc = WndProc;
//
// This procedure allows us to Destroy the Created
// Window which would otherwise not be possible
LRESULT FAR PASCAL WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
if(Message == WM_COMMAND)
{
DestroyWindow(hWnd);
}
return (DefWindowProc(hWnd, Message, wParam, lParam));
}
//
// If the Class was registered successfully
// we proceed with creating the Window
// With the CreateWindowEx function as below
//
// The following variables passed to CreateWindowEx
// contain information as selected on the Formview
// dExtendedStyle = Extended Window Styles
// m_EditCaption = Window Caption
// dStyle = Style of The Window
// x = Left Position of the Window
// y = Top Position of the WIndow
// nWidth = Width of the Window
// nHeight = Height of the Window
// hMenu = Menu (if Checked)
// (Menu is created in the Resources)
//
hWndMain = CreateWindowEx(
dExtendedStyle,
szClassName,
m_EditCaption,
dStyle,
x,
y,
nWidth,
nHeight,
this->m_hWnd,
hMenu,
AfxGetInstanceHandle(),
NULL);
if(!hWndMain)
{
AfxMessageBox("Error Creating Window");
return;
}
//
//
// We create a button on the newly
// created Window , to enable us to close
// the Window in case the created Window
// did not have the Menu option enabled or
// Window cannot have a Menu as a Standard
//
//
HWND hwndBtn = CreateWindow(_T("BUTTON"),
_T("&Close"),
WS_VISIBLE|
WS_CHILD|
BS_DEFPUSHBUTTON,
30,20,90,30,
hWndMain,
(HMENU)ID_CLOSE_BUTTON,
NULL,
NULL);
//
// Finally we Display the Window as shown below
//
::ShowWindow(hWndMain, SW_SHOW);
</code>
窗口快乐! ! 本文转载于:http://www.diyabc.com/frontweb/news8341.html

浙公网安备 33010602011771号