请问怎么禁止一个对话框移动?

QXLEE 2002-08-21 12:13:52
该对话框有最小化按钮和最大化(屏蔽)
...全文
359 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
flying_fox0 2002-08-28
  • 打赏
  • 举报
回复
to GaoDi :

SC_MOVE 是 0xF010

0xF012是什么?
ynli2002 2002-08-23
  • 打赏
  • 举报
回复
跟班学习
naci007 2002-08-23
  • 打赏
  • 举报
回复
我试过了,hzsagile(笑傲江湖)的方法也很稳定,没有出现“QXLEE(水王之王)”所说的情况
hzsagile 2002-08-23
  • 打赏
  • 举报
回复
// remove '恢复' menu item from system menu
menuSYS->RemoveMenu(SC_RESTORE, MF_BYCOMMAND);
// remove '移动' menu item from system menu
menuSYS->RemoveMenu(SC_MOVE, MF_BYCOMMAND);
// remove '大小' menu item from system menu
menuSYS->RemoveMenu(SC_SIZE, MF_BYCOMMAND);
// remove '最大化' menu item from system menu
menuSYS->RemoveMenu(SC_MAXIMIZE, MF_BYCOMMAND);

其实得到系统菜单的目录类指针后,想做什么都可以,可当作一般目录来操作
QXLEE 2002-08-23
  • 打赏
  • 举报
回复

哦,我回去试过了,的确可以的,但在标题栏右键的最大化还是有用,请问如何控制标题栏上右键菜单的选项?
QXLEE 2002-08-22
  • 打赏
  • 举报
回复


我再回去试试

hzsagile 2002-08-22
  • 打赏
  • 举报
回复
在OnInitDialog()使用,我试过没问题
CMenu *menuSYS = this->GetSystemMenu(FALSE);
ASSERT(menuSYS != NULL);
menuSYS->RemoveMenu(SC_MOVE, MF_BYCOMMAND);

QXLEE 2002-08-22
  • 打赏
  • 举报
回复
我回去试过几位的方法,发现GaoDi()的方法最稳定,albert() ( )的方法也可以实现,不过拖动标题栏时震动得很厉害。hzsagile(笑傲江湖) ( )的方法具体是怎样的?我只是在XXXDlg.h中加一句,然后把ModifySystemMenu()放在XXXDlg.cpp就用了,试过在onpaint()和OnInitDialog()中用,不见有什么变化,具体应该怎样用啊?另外,如何使任务栏右键时那些菜单项变灰色呢?我学mfc有一小段时间了,但以前都是用api写东西的没怎么用mfc,所以对这些问题比较陌生,请多多指教!
punpuny 2002-08-21
  • 打赏
  • 举报
回复
在你dialog头文件中添加
afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);

在你dialog的cpp文件中,BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加
ON_WM_NCLBUTTONDOWN()
ON_WM_NCMOUSEMOVE()

然后再加上下面语句
void CButtonDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
if (nHitTest != HTCAPTION)
{
CDialog::OnNcLButtonDown(nHitTest, point);
}
}

void CButtonDlg::OnNcMouseMove(UINT nHitTest, CPoint point)
{
if (nHitTest != HTCAPTION)
{
CDialog::OnNcMouseMove(nHitTest, point);
}
}


hzsagile 2002-08-21
  • 打赏
  • 举报
回复
void CMajorWinDlg::ModifySystemMenu()
{
// get system menu pointer, and made it can be modified
CMenu *menuSYS = this->GetSystemMenu(FALSE);
// debug check pointer existance
ASSERT(menuSYS != NULL);
// if system menu is exsited
if (menuSYS != NULL)
{
// remove '恢复' menu item from system menu
menuSYS->RemoveMenu(SC_RESTORE, MF_BYCOMMAND);
// remove '移动' menu item from system menu
menuSYS->RemoveMenu(SC_MOVE, MF_BYCOMMAND);
// remove '大小' menu item from system menu
menuSYS->RemoveMenu(SC_SIZE, MF_BYCOMMAND);
// remove '最大化' menu item from system menu
menuSYS->RemoveMenu(SC_MAXIMIZE, MF_BYCOMMAND);

// define menu item string which will be instead
CString strMenuItem;
// load the specified string from resource
strMenuItem.LoadString(IDS_ABOUT);
// use '关于本系统' menu item instead last menu item in system menu
menuSYS->ModifyMenu(menuSYS->GetMenuItemID(4), MF_BYCOMMAND,
IDM_ABOUTBOX, strMenuItem);
}
}
freelybird 2002-08-21
  • 打赏
  • 举报
回复
UINT CTestDlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default

// return CDialog::OnNcHitTest(point);
return FALSE;
}
GaoDi 2002-08-21
  • 打赏
  • 举报
回复
为这个对话框添加系统消息过虑处理:
.h中:
...
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
...

.cpp中
BEGIN_MESSAGE_MAP(CServerDlg, CDialog)
...
ON_WM_SYSCOMMAND()
...
END_MESSAGE_MAP()


void XXXX::OnSysCommand(UINT nID, LPARAM lParam)
{
if (nID==0xF010 || nID==0xF012)
return;
else
CDialog::OnSysCommand(nID, lParam);
}

另外如果要屏蔽最小化和最大化按钮,他们的nID分别对应0xF020, 0xF030

punpuny 2002-08-21
  • 打赏
  • 举报
回复
重载WM_NCMOUSEDOWN和WM_NCMOUSEMOVE,在其中什么事都不做。
albert 2002-08-21
  • 打赏
  • 举报
回复
void CTestDlg::OnMove(int x, int y)
{
//CDialog::OnMove(x, y);
RECT rect;
rect.top = 0;
rect.left = 0;
rect.right = 100;
rect.bottom = 100;

MoveWindow(&rect);
}
masterz 2002-08-21
  • 打赏
  • 举报
回复
add a handler to WM_MOVING message,
void CNomoveDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
RECT m_rect;
GetWindowRect(&m_rect);
pRect->bottom=m_rect.bottom;
pRect->left=m_rect.left;
pRect->right=m_rect.right;
pRect->top=m_rect.top;

}
zhaoweidf 2002-08-21
  • 打赏
  • 举报
回复
up
QXLEE 2002-08-21
  • 打赏
  • 举报
回复


谢谢各位,我试试各位的方法,行了马上来给分

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧