Здравствуйте, Similex, Вы писали:
VB>>Вот только есть несколько проблем:
VB>>1) Соответствующие пункты меню остались активными, что дезинформирует пользователя — нехорошо. Нужно сделать что-нибудь типа
VB>>VB>>void CMyWindow::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
VB>>{
VB>> parent_class::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
VB>> pPopupMenu->EnableMenuItem(SC_MOVE, MF_GRAYED|MF_BYCOMMAND);
VB>>}
VB>>
S>а что и нужно было если хочешь отключить вообще одиночный клик просто допиши пару цифр помимо 61458 .... проблема решена.
Дело не в отключении режима. Дело в том, что пользователю надо показать, что режим неактивен (disable), для чего стандартно необходимо сделать соответствующий пункт меню серым.
VB>>3) Полностью это проблему все равно не решает — у пользователя остается способ подвинуть твое окно. Пойди в task bar (там, где системная кнопка Start находится), щелкни правой кнопкой мыши, выбери в меню Cascade Windows (или Tile Windows...) и любуйся результатом
S>а вот сдесь.... Да эта проблема остается. Только как ее решить кто-нить знает?????
Ну, если уж очень хочется, то правильным образом твою проблему нужно решать так:
void CMainFrame::OnMoving(UINT fwSide, LPRECT pRect)
{
CFrameWnd::OnMoving(fwSide, pRect);
pRect->top = 20;
pRect->bottom = 220;
pRect->left = 50;
pRect->right = 550;
}
void CMainFrame::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
CFrameWnd::OnWindowPosChanging(lpwndpos);
lpwndpos->x = 50;
lpwndpos->y = 20;
lpwndpos->cx = 500;
lpwndpos->cy = 200;
}
void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect)
{
CFrameWnd::OnSizing(fwSide, pRect);
pRect->top = 20;
pRect->bottom = 220;
pRect->left = 50;
pRect->right = 550;
}
Этот способ лучше твоего
1) тем, что работает всегда, в том числе в случае Cascade из task bar или если кто-то напишет программку, которая будет твоему окну SetWindowPos делать,
2) тем, что при попытке потянуть за окно рисуется стандартная рамочка
3) большей гибкостью (например, если завтра захочется разрешить менять размер, но не положение левого верхнего угла, то этим способом оно делается элементарно).