int CRcGen::_BuildLabel(cControles* pCtrl, CTelaAtual* pTa, int& y, int& ratioXPos) { if(pCtrl->sTipo.CompareNoCase(L"Radio") == 0 || pCtrl->sTipo.CompareNoCase(L"Botão") == 0 || pCtrl->sTipo.CompareNoCase(L"Check") == 0 || pCtrl->sTipo.CompareNoCase(L"Label") == 0) return 0; CRect rect; //Se tiver label if(!pCtrl->sNome.IsEmpty()) { rect = GetCtrlRect(LABEL_CTRL, y, ratioXPos); rect.bottom -= 4; /*if(pCtrl->sNome.GetLength() > 12) { rect.top = rect.top - 5; rect.bottom += ((pCtrl->sNome.GetLength()/12)+1) * DEFAULT_HEIGHT; }*/ m_label = new CStatic(); m_label->Create(pCtrl->sNome, 0, rect, m_pThis, 100); if(m_bShow) m_label->ShowWindow(SW_SHOW); pTa->pLabel = m_label; return rect.bottom - rect.top; //y = rect.bottom - rect.top + DEFAULT_SPACE; } return 0; }
void CXTPCalendarEventRecurrenceDlg::MoveWindow_Y(int nID, int nYOffset) { if (GetDlgItem(nID)) { CRect rcRect = GetCtrlRect(nID); ScreenToClient(&rcRect); rcRect.top += nYOffset; rcRect.bottom += nYOffset; GetDlgItem(nID)->MoveWindow(rcRect); } else { ASSERT(FALSE); } }
void CRcGen::_GenerateControls(cControles &cCtrl, CRect &rect, const int ratioXPos, CTelaAtual* at, DWORD &id, int &y_atu) { int iTopo = m_y; if(cCtrl.iTopo >= 0) iTopo += cCtrl.iTopo; if(cCtrl.sTipo.Compare(_T("Label"))==0) { rect = GetCtrlRect(LABEL, iTopo, ratioXPos, cCtrl.iEsquerda); if(cCtrl.sNome.GetLength() > 35) rect.bottom += ((cCtrl.sNome.GetLength()/35)+1) * DEFAULT_HEIGHT; //pDc->Rectangle(rect); //pDc->DrawText(cCtrl.sNome, rect, 0); m_label = new CStatic(); m_label->Create(cCtrl.sNome, 0, rect, m_pThis, id); //m_label->ShowWindow(SW_SHOW); y_atu = max(rect.bottom + DEFAULT_SPACE, y_atu); at->r = rect; at->tipoCtrl = LABEL; at->wndControl = m_label; } else if(cCtrl.sTipo.Compare(_T("Botão"))==0) { if(cCtrl.iExCtrl > 0) { m_button_ex = new CButtonEx(); } else { m_button = new CButton(); } rect = GetCtrlRect(BOTAO, iTopo, ratioXPos, cCtrl.iEsquerda); y_atu = max(rect.bottom, y_atu); (cCtrl.iExCtrl > 0 ? m_button_ex : m_button)->Create(cCtrl.sNome, button_style, rect, m_pThis, id+cCtrl.nID); at->r = rect; at->tipoCtrl = BOTAO; at->wndControl = (cCtrl.iExCtrl > 0 ? m_button_ex : m_button); if(cCtrl.iExCtrl > 0) { m_button_ex->SetIconEx(cCtrl.iExCtrl, CSize(16,16)); } //pDc->Rectangle(rect); //(cCtrl.iExCtrl > 0 ? m_button_ex : m_button)->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Check"))==0) { m_button = new CButton(); rect = GetCtrlRect(CHECK, iTopo, ratioXPos, cCtrl.iEsquerda); y_atu = max(rect.bottom, y_atu); m_button->Create(cCtrl.sNome, check_style, rect, m_pThis, id+cCtrl.nID); at->r = rect; at->tipoCtrl = CHECK; at->wndControl = m_button; //pDc->Rectangle(rect); //m_button->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Radio"))==0) { m_button = new CButton(); rect = GetCtrlRect(RADIO, iTopo, ratioXPos, cCtrl.iEsquerda); y_atu = max(rect.bottom, y_atu); m_button->Create(cCtrl.sNome, radio_style, rect, m_pThis, id+cCtrl.nID); at->r = rect; at->tipoCtrl = RADIO; at->wndControl = m_button; //pDc->Rectangle(rect); //m_button->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Drop-Down Combo"))==0) { m_combo = new CEGBComboBox(); rect = GetCtrlRect(COMBO, iTopo, ratioXPos, cCtrl.iEsquerda); y_atu = max(rect.bottom, y_atu); //rect.bottom = rect.top + 120; m_combo->Create(combo_drop_style, CRect(rect.left, rect.top, rect.right, rect.top + 120), m_pThis, id+cCtrl.nID); m_combo->SetFixedContent(); at->r = rect; at->tipoCtrl = COMBO; at->wndControl = m_combo; // cCtrl.iAltura = DEFAULT_HEIGHT; //pDc->Rectangle(rect); //m_combo->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Combo Editável"))==0) { m_combo = new CEGBComboBox(); rect = GetCtrlRect(COMBO_EDITAVEL, iTopo, ratioXPos, cCtrl.iEsquerda); y_atu = max(rect.bottom, y_atu); //rect.bottom = rect.top + 120; m_combo->Create(combo_edit_style, CRect(rect.left, rect.top, rect.right, rect.top + 120), m_pThis, id+cCtrl.nID); at->r = rect; at->tipoCtrl = COMBO_EDITAVEL; at->wndControl = m_combo; // cCtrl.iAltura = DEFAULT_HEIGHT; //pDc->Rectangle(rect); //m_combo->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Caixa de Texto"))==0) { m_edit = new CEGBEdit(); rect = GetCtrlRect(TEXTO, iTopo, ratioXPos, cCtrl.iEsquerda); m_edit->Create(text_style, rect, m_pThis, id+cCtrl.nID); if(cCtrl.iReadOnly) m_edit->SetReadOnly(TRUE); at->r = rect; at->tipoCtrl = TEXTO; at->wndControl = m_edit; // cCtrl.iAltura = DEFAULT_HEIGHT; //m_edit->ShowWindow(SW_SHOW); y_atu = max(rect.bottom, y_atu); //pDc->Rectangle(rect); } else if(cCtrl.sTipo.Compare(_T("Texto MultiLinha"))==0) { m_edit = new CEGBEdit(); rect = GetCtrlRect(TEXTO_MULTILINHA, iTopo, ratioXPos, cCtrl.iEsquerda); if(cCtrl.iLinhas == -1) { CRect r; m_pTrueThis->GetWindowRect(r); #ifdef _WIN32_WCE rect.bottom = r.bottom-60; rect.right = r.right-30; #else rect.bottom = r.bottom-100; rect.right = r.right-100; #endif } else { rect.bottom += (cCtrl.iLinhas-1) * DEFAULT_HEIGHT; } y_atu = max(rect.bottom, y_atu); m_edit->Create(multiline_style, rect, m_pThis, id+cCtrl.nID); if(cCtrl.iReadOnly) m_edit->SetReadOnly(TRUE); at->r = rect; at->tipoCtrl = TEXTO_MULTILINHA; at->wndControl = m_edit; // cCtrl.iAltura = DEFAULT_HEIGHT; //pDc->Rectangle(rect); //m_edit->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Seleção de Data"))==0) { m_datectrl = new CDateTimeCtrl(); rect = GetCtrlRect(DATA, iTopo, ratioXPos, cCtrl.iEsquerda); y_atu = max(rect.bottom, y_atu); m_datectrl->Create(date_style, rect, m_pThis, id+cCtrl.nID); at->r = rect; at->tipoCtrl = DATA; at->wndControl = m_datectrl; // cCtrl.iAltura = DEFAULT_HEIGHT; //pDc->Rectangle(rect); //m_datectrl->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Seleção de Hora"))==0) { m_datectrl = new CDateTimeCtrl(); rect = GetCtrlRect(HORA, iTopo, ratioXPos, cCtrl.iEsquerda); m_datectrl->Create(time_style, rect, m_pThis, id+cCtrl.nID); at->r = rect; at->tipoCtrl = HORA; at->wndControl = m_datectrl; // cCtrl.iAltura = DEFAULT_HEIGHT; y_atu = max(rect.bottom, y_atu); //pDc->Rectangle(rect); //m_datectrl->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("List Control"))==0) { m_listctrl = new CListCtrl(); rect = GetCtrlRect(LIST_CONTROL, iTopo, ratioXPos, cCtrl.iEsquerda); rect.bottom += (cCtrl.iLinhas-1) * DEFAULT_HEIGHT; y_atu = max(rect.bottom, y_atu); m_listctrl->Create(listctrl_style, rect, m_pThis, id+cCtrl.nID); _FormatList(cCtrl.nID); at->r = rect; at->tipoCtrl = LIST_CONTROL; at->wndControl = m_listctrl; // cCtrl.iAltura = DEFAULT_HEIGHT; //pDc->Rectangle(rect); //m_listctrl->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Image"))==0) { #ifdef _WIN32_WCE m_image = new CDibControl(); #else m_image = new CPictureEx(); #endif rect = GetCtrlRect(LABEL, iTopo, ratioXPos, cCtrl.iEsquerda); if(cCtrl.iLargura > 100) rect.right = rect.left + cCtrl.iLargura; if(cCtrl.iAltura > -1) rect.bottom = rect.top + cCtrl.iAltura; else rect.bottom += (cCtrl.iLinhas-1) * DEFAULT_HEIGHT; y_atu = max(rect.bottom, y_atu); #ifdef _WIN32_WCE m_image->Create(rect, m_pThis, id); #else m_image->Create(L"", 0, rect, m_pThis, id); #endif CUtil::GetPathFromVariable(cCtrl.sBDValue); #ifdef _WIN32_WCE m_image->SetStretch(TRUE); m_image->LoadJPG(cCtrl.sBDValue); #else m_image->SetStretch(TRUE); m_image->Load(cCtrl.sBDValue); m_image->Draw(); #endif at->r = rect; at->tipoCtrl = LABEL; at->wndControl = m_image; //m_image->ShowWindow(SW_SHOW); } else if(cCtrl.sTipo.Compare(_T("Custom"))==0) { rect = GetCtrlRect(LABEL, iTopo, ratioXPos); if(cCtrl.iLinhas == -1) { CRect r; m_pTrueThis->GetWindowRect(r); #ifdef _WIN32_WCE rect.bottom = r.bottom-60; rect.right = r.right-30; #else rect.bottom = r.bottom-100; rect.right = r.right-100; #endif } else { rect.bottom += (cCtrl.iLinhas-1) * DEFAULT_HEIGHT; } y_atu = max(rect.bottom, y_atu); at->r = rect; at->tipoCtrl = CUSTOM; at->wndControl = NULL; } if(m_bShow && at->wndControl) at->wndControl->ShowWindow(SW_SHOW); CString t; t.Format(L"%s(%d): Id: %d Rect: T:%d L:%d R:%d B:%d.\r\n", CString(__FUNCTION__), __LINE__, cCtrl.nID, rect.top, rect.left, rect.right, rect.bottom); OutputDebugString(t); }
void CXTPCalendarEventRecurrenceDlg::_MoveControlsBy_Y() { CRect rcBase = GetCtrlRect(XTP_IDC_RADIO_DAILY); rcBase.top += 10; CRect rcBase2 = GetCtrlRect(XTP_IDC_RADIO_EVERYDAY); int nYOffset = rcBase.top - rcBase2.top; MoveWindow_Y(XTP_IDC_RADIO_EVERYDAY, nYOffset); MoveWindow_Y(XTP_IDC_RADIO_EVERYWORKDAY,nYOffset); MoveWindow_Y(XTP_IDC_EDIT_DAYINTERVAL, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_DAY, nYOffset); rcBase2 = GetCtrlRect(XTP_IDC_STATIC_WEEKLY_RECEVERY); nYOffset = rcBase.top - rcBase2.top; MoveWindow_Y(XTP_IDC_STATIC_WEEKLY_RECEVERY,nYOffset); MoveWindow_Y(XTP_IDC_EDIT_WEEKLY_INTERVAL, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_WEEKLY_FOLLDAYS,nYOffset); MoveWindow_Y(XTP_IDC_CHECK_MONDAY, nYOffset); MoveWindow_Y(XTP_IDC_CHECK_TUESDAY, nYOffset); MoveWindow_Y(XTP_IDC_CHECK_WEDNESDAY, nYOffset); MoveWindow_Y(XTP_IDC_CHECK_THURSDAY, nYOffset); MoveWindow_Y(XTP_IDC_CHECK_FRIDAY, nYOffset); MoveWindow_Y(XTP_IDC_CHECK_SATURDAY, nYOffset); MoveWindow_Y(XTP_IDC_CHECK_SUNDAY, nYOffset); rcBase2 = GetCtrlRect(XTP_IDC_RADIO_MONTH_RECUR); nYOffset = rcBase.top - rcBase2.top; MoveWindow_Y(XTP_IDC_RADIO_MONTH_RECUR, nYOffset); MoveWindow_Y(XTP_IDC_RADIO_MONTH_IN, nYOffset); MoveWindow_Y(XTP_IDC_EDIT_MONTH_DATE, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_MONTH_NUMEVERY, nYOffset); MoveWindow_Y(XTP_IDC_EDIT_MONTH_MONTH, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_MONTH_MONTH, nYOffset); MoveWindow_Y(XTP_IDC_COMBO_MONTH_CRIT, nYOffset); MoveWindow_Y(XTP_IDC_COMBO_MONTH_DAY, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_MONTH_EVERY, nYOffset); MoveWindow_Y(XTP_IDC_EDIT_MONTH_MONTH2, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_MONTH_MONTH2, nYOffset); rcBase2 = GetCtrlRect(XTP_IDC_RADIO_YEAR_RECUR); nYOffset = rcBase.top - rcBase2.top; MoveWindow_Y(XTP_IDC_RADIO_YEAR_RECUR, nYOffset); MoveWindow_Y(XTP_IDC_RADIO_YEAR_IN, nYOffset); MoveWindow_Y(XTP_IDC_EDIT_YEAR_DATE, nYOffset); MoveWindow_Y(XTP_IDC_COMBO_YEAR_MONTH, nYOffset); MoveWindow_Y(XTP_IDC_COMBO_YEAR_CRIT, nYOffset); MoveWindow_Y(XTP_IDC_COMBO_YEAR_DAY, nYOffset); MoveWindow_Y(XTP_IDC_COMBO_YEAR_MONTH2, nYOffset); MoveWindow_Y(XTP_IDC_STATIC_YEAR_OF, nYOffset); //------------------------------------------------------------------------ CRect rcDialog; GetWindowRect(&rcDialog); CRect rcOK = GetCtrlRect(IDOK); rcDialog.bottom = rcOK.bottom + 10; SetWindowPos(NULL, 0, 0, rcDialog.Width(), rcDialog.Height(), SWP_NOMOVE | SWP_NOZORDER); }