15,980
社区成员




BOOL CDynamicFilterSettingFrame::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return TRUE;
//return CWnd::OnEraseBkgnd(pDC);
}
void CDynamicFilterSettingFrame::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CWnd::OnPaint() for painting messages
dc.SetBkMode(TRANSPARENT); //设置背景透明
dc.FillSolidRect(0, 0, m_nViewWidth, m_nViewHeight, RGB(240, 240, 240));
}
void CDynamicFilterSettingFrame::CreateDynamicCtrl()
{
SetRedraw(FALSE);
//LockWindowUpdate();
CreateAddButton();
CreateReduceButton();
CreateLeftBraceRadiobutton();
CreateRightBraceRadiobutton();
CreateLeftBraceStatic(); // 左括号静态文本
CreateRightBraceStatic(); // 右括号静态文本
CreateColNameCombox(); // 字段选择Combox
CreateOperatorCombox(); // 运算符选择Combox
CreateValueAEdit(); // 值A 编辑框
CreateValueBEdit(); // 值A 编辑框
CreateLogicalConnectorCombox(); // 逻辑连接符选择Combox
UpdateVScroll();
SetRedraw(TRUE);
//
// CRect rect;
// GetClientRect(&rect);
this->RedrawWindow(NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
}
void CDynamicFilterSettingFrame::CreateRightBraceStatic()
{
CRect BaseRect;
m_BaseStaticPtr[3]->GetWindowRect(BaseRect);
ScreenToClient(&BaseRect);
int nLeft = BaseRect.left + VALUE_EDIT_WIDTH/* + BASE_DISTANCE_X*/;
int nTop = BaseRect.top + (BASE_HEIGHT + BASE_DISTANCE_Y) * (m_nNewAddRowIdx + 1)/* - m_iCurrentScrollPos*/;
int nRight = nLeft + BRACE_STATIC_WIDTH;
int nBottom = nTop + BASE_HEIGHT;
DWORD bn_dwStyle = WS_CHILD | WS_VISIBLE | SS_RIGHT| SS_CENTERIMAGE;
CStatic *pstatic = new CStatic;
pstatic->Create(_T(""), bn_dwStyle, CRect(nLeft, nTop, nRight, nBottom), this, IDC_STATIC_DYNAMIC_RIGHT_BRACE_BEGIN + m_vecUsedBaseID[m_nNewAddRowIdx]);//Button的创建语句
pstatic->SetFont(&m_fontbase);
// 保存控件指针
m_RightBraceStaticPtr.insert(m_RightBraceStaticPtr.begin() + m_nNewAddRowIdx, pstatic);
// 更新控件坐标
if (m_nNewAddRowIdx < m_vecUsedBaseID.size() - 1)
{
int nOffSetY = BASE_HEIGHT + BASE_DISTANCE_Y;
for (int i = m_nNewAddRowIdx + 1; i < m_vecUsedBaseID.size(); i++)
{
// 先获取旧的位置,然后直接整体平移一层
m_RightBraceStaticPtr[i]->GetWindowRect(BaseRect);
ScreenToClient(&BaseRect);
m_RightBraceStaticPtr[i]->MoveWindow(BaseRect.left, BaseRect.top + nOffSetY, BaseRect.Width(), BASE_HEIGHT, FALSE);
}
}
}