Mfc 控件使用动态布局消失
这真奇怪!我有这个对话框资源:Mfc 控件使用动态布局消失,mfc,Mfc,这真奇怪!我有这个对话框资源: ID_DLG_ASSIGN DIALOGEX 0, 0, 415, 285 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Assignments" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Date Range
ID_DLG_ASSIGN DIALOGEX 0, 0, 415, 285
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Assignments"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Date Range ...",IDC_STATIC,7,9,120,91,0,WS_EX_TRANSPARENT
LTEXT "&Start Date:",IDC_STATIC,16,18,103,8
CONTROL "DateTimePicker1",ID_DTP_ASSIGN_FROM,"SysDateTimePick32",DTS_RIGHTALIGN | WS_TABSTOP,16,28,104,12
LTEXT "&End Date:",IDC_STATIC,16,43,103,8
CONTROL "DateTimePicker2",ID_DTP_ASSIGN_TO,"SysDateTimePick32",DTS_RIGHTALIGN | WS_TABSTOP,16,54,104,12
PUSHBUTTON "&Display Entries",ID_BTN_DISPLAY_ENTRIES,21,76,90,14
GROUPBOX "Settings ...",IDC_STATIC,7,101,120,174,0,WS_EX_TRANSPARENT
LTEXT "Assignment:",IDC_STATIC,16,113,102,10
COMBOBOX IDC_COMBO_ASSIGNMENT,16,124,97,60,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Starting Name:",IDC_STATIC,16,143,96,8
COMBOBOX ID_CMB_START_NAME,16,154,97,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Include All Dates",IDC_CHECK_INCLUDE_ALL_DATES_CHAIRMAN_READER,
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,19,169,96,16
CONTROL "Ignore Local Speakers",IDC_CHECK_IGNORE_LOCAL,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,19,182,96,19
CONTROL "&Avoid Conflicts",IDC_CHK_AVOID_CONFLICT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,202,95,10
LTEXT "&Weeks to avoid:",ID_STATIC_WEEKS,30,215,94,8
COMBOBOX ID_CMB_NUM_WEEKS,42,227,39,44,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "A&uto Assign",ID_BTN_AUTO_ASSIGN,21,251,90,14
GROUPBOX "Entries ...",IDC_STATIC_ENTRIES,134,9,272,248,0,WS_EX_TRANSPARENT
CONTROL "",IDC_STATIC_ASSIGN_GRID,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,141,22,258,204
PUSHBUTTON "&Show Conflicts",ID_BTN_SHOW_CONFLICTS,178,237,90,14
CONTROL "",ID_STATIC_KEY,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,277,230,122,21
PUSHBUTTON "Help",ID_BTN_HELP,134,261,50,14
PUSHBUTTON "Print",ID_BTN_ASSIGN_PRINT,189,261,50,14
PUSHBUTTON "Undo",ID_BTN_UNDO,245,261,50,14
PUSHBUTTON "Cancel",IDCANCEL,301,261,50,14
DEFPUSHBUTTON "OK",IDOK,357,261,50,14
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT | NOT WS_VISIBLE,377,97,1,1
END
以下是动态布局数据:
ID_DLG_ASSIGN AFX_DIALOG_LAYOUT
BEGIN
0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 100, 100,
0, 0, 100, 100,
100, 100, 0, 0,
100, 100, 0, 0,
100, 100, 0, 0,
100, 100, 0, 0,
100, 100, 0, 0,
100, 100, 0, 0,
100, 100, 0, 0,
0, 0, 0, 0
END
现在,有两个特定控件:
GROUPBOX“日期范围…”,IDC_静态,7,9120,91,0,WS_EX_透明
GROUPBOX“设置…”,IDC_静态,7101120174,0,WS_EX_透明
OnSize
:
void CAssignmentsDlg::OnSize(UINT nType, int cx, int cy)
{
CResizingDialog::OnSize(nType, cx, cy);
CRect rctControl;
m_lblAssignGrid.GetWindowRect(rctControl);
ScreenToClient(rctControl);
m_Grid.MoveWindow(rctControl);
}
和OnPaint
:
void CAssignmentsDlg::OnPaint()
{
//CResizingDialog::OnPaint();
CPaintDC dc(this); // device context for painting
COLORREF crTextHL, crBackHL;
COLORREF crTextOld, crBackOld;
CString strText;
EstablishLegendPosition();
crBackHL = ::GetSysColor(COLOR_HIGHLIGHT);
crTextHL = ::GetSysColor(COLOR_HIGHLIGHTTEXT);
dc.FillSolidRect(m_rcKey, crBackHL);
crBackOld = dc.SetBkColor(crBackHL);
crTextOld = dc.SetTextColor(crTextHL);
strText.LoadString( IDS_STR_SAMPLE_CONFLICT );
CFont l_font;
l_font.CreateFont(14, 0, 0, 0, FW_NORMAL,
FALSE, FALSE, FALSE, 0,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN, _T("Arial"));
CFont* l_old_font = dc.SelectObject(&l_font);
dc.DrawText( strText, m_rcKey, DT_SINGLELINE|DT_CENTER|DT_VCENTER );
dc.SetBkColor(crBackOld);
dc.SetTextColor(crTextOld);
// Delete the font object.
dc.SelectObject(l_old_font);
l_font.DeleteObject();
CRect rc;
GetClientRect(&rc);
rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);
HTHEME ht = OpenThemeData(GetSafeHwnd(), L"STATUS");
if (ht)
{
DrawThemeBackground(ht, dc, SP_GRIPPER, 0, &rc, nullptr);
CloseThemeData(ht);
}
else
{
dc.DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}
}
我把手爪的图纸从基础移到这个类中,以防万一这是个问题。我不明白。排序
WS_CLIPCHILDREN
是罪魁祸首。关闭它,调整大小就可以正常工作。我试过关闭Windows百叶窗,效果也一样。