Предполагая, что edit-control является потомком класса, CView
полученного, вам лучше поместить обработчик OnUpdateUI()
в класс представления, а не в документ один.
Например, если класс представления CFormView
-приведен (диалоговое окно), вы можете просто написать:
void CMyView::OnUpdateTextColor(CCmdUI *pCmdUI)
{
pCmdUI->Enable(GetFocus()==GetDlgItem(IDC_MYEDIT));
}
Этот фрагмент кода работает как для приложений SDI, так и для MDI.
Если класс представления не получен CFormView
(поле редактирования было создано программно), приведенный выше код можно немного изменить, и вместо вызова GetDlgItem()
вам следует перечислить список детей представления (выполнить поиск по вашему редактированию). Ящик есть).
Если единственной причиной переопределения элемента управления редактирования было получение EN_SET/KILLFOCUS
сообщений, извините, это не стоило усилий, так как вы могли просто захватить их в коде представления. Тогда карта сообщений представления будет содержать:
ON_EN_SETFOCUS(IDC_MYEDIT, &CMyView::OnEnSetfocusMyEdit)
ON_EN_KILLFOCUS(IDC_MYEDIT, &CMyView::OnEnKillfocusMyEdit)
и код класса представления:
void CMyView::OnEnSetfocusMyEdit()
{
// TODO: Add your control notification handler code here
}
void CMyView::OnEnKillfocusMyEdit()
{
// TODO: Add your control notification handler code here
}
Они генерируются мастером. Перейдите на вкладку Class View, выберите свой класс и затем перейдите на страницу Events; в поддереве Controls вы можете найти свой элемент управления и добавить обработчики для его событий. Но все это не нужно, так как вы можете просто использовать GetFocus()/GetDlgItem()
, как предложено выше.
И как говорили другие члены, вы можете получить доступ к классу документа из любого его представления, вызвав функцию GetDocument()
.
Просто добавьте предложение orderby; -)
from a in Audits
join u in Users on a.UserId equals u.UserId
group a by a.UserId into g
let score = g.Sum(x => x.Score)
orderby score descending
select new { UserId = g.Key, Score = score };
var results =
(from a in Audits
join u in Users on a.UserId equals u.UserId
group a by a.UserId into g
select new { UserId = g.Key, Score = g.Sum(x => x.Score) })
.OrderByDescending(p=>p.Score);
Надеюсь, это решит вашу проблему, проще, чем верх один;)
Приветствия