MFC如何设置afxmessagebox出现的位置

如题
不好意思,我是新手只做了个简单的程序,你说的那个自定义的消息映射在哪儿定义啊??

嗯... ,
AfxMessageBox 默认是不支持自定义位置和大小的, API 的 ::MessageBox 也不支持.
要能调整位置, 最直接的是..自己做一个 MessageBox , 要用的时候 DoModal

如果一定要用 AfxMessageBox ,可以这样:

先自定义一个消息映射
#define WM_MSGBOX_MOVE (WM_USER + 100)

BEGIN_MESSAGE_MAP(your dialog)
....
ON_MESSAGE(WM_MSGBOX_MOVE , OnMsgboxMove)
END_MESSAGE_MAP()

void CxxxxDlg::OnMsgboxMove()
{
HWND hwnd = ::GetForegroundWindow(); // 得到 MessageBox
CRect rect;
::GetWindowRect(hwnd, &rect);
::MoveWindow(hwnd, 100, 100, rect.Width(), rect.Height(), TRUE); // 这里是移动到 100,100
}

在需要显示 的地方这么用

PostMessage(WM_MSGBOX_MOVE );
AfxMessageBox("test");
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-07
AfxMessageBox是无法控制出现位置的,这是一个封装的快速提示。
需要一个指定位置或者指定样式、大小的提示框,自己做一个Dialog就好了,这样你可以通过参数控制,在OnInitDialog里面通过MoveWindow控制对话框位置。
第2个回答  2010-01-25
AfxMessageBox是MFC库提供的全局函数,其最终结果是调用 windowsAPI MessageBox()
由于参数中没有提供坐标位置的功能,首次弹出来 在屏幕的中央,以后会自动按照Z次序排列,(就是往右下角 偏移),所以你不能改变它的弹出位置
由于messagebox只是一个小窗口,你可以自己构造一个msgbox类,然后继承窗口类,
第3个回答  2010-01-25
你把函数写在哪就会出理在哪呀

MFC如何设置afxmessagebox出现的位置
AfxMessageBox是无法控制出现位置的,这是一个封装的快速提示。需要一个指定位置或者指定样式、大小的提示框,自己做一个Dialog就好了,这样你可以通过参数控制,在OnInitDialog里面通过MoveWindow控制对话框位置。

MFC如何设置afxmessagebox出现的位置
AfxMessageBox 默认是不支持自定义位置和大小的, API 的 ::MessageBox 也不支持.要能调整位置, 最直接的是..自己做一个 MessageBox , 要用的时候 DoModal 如果一定要用 AfxMessageBox ,可以这样:先自定义一个消息映射 define WM_MSGBOX_MOVE (WM_USER + 100)BEGIN_MESSAGE_MAP(your dialog)...ON_...

MFC中AfxMessageBox()如何显示在最上面?
AfxMessageBox(_T("Init Success!!!"),MB_OK | MB_SYSTEMMODAL);

mfc中AfxMessageBox的使用
nRes = AfxMessageBox(_T("您确定要进行加法计算吗?"), MB_OKCANCEL | MB_ICONQUESTION);AfxMessageBox不同于MessageBox,不需要自己定义标题

VC中怎么定位MessageBox出现的位置
而 AfxMessageBox 则只能在C++代码中使用,一般都是在MFC程序中使用AfxMessageBox。 AfxMessageBox 内部处理了MessageBox的参数,然后调用 MessageBox来实现。而实际上MessageBox只是一个宏,真正的函数是MessageBoxA和MessageBoxW,这两个函数都没有提供控制其出现位置的参数,所以,不能控制其出现的位置。

mfc中AfxMessageBox的使用
1、首先打开电脑,新建一个基于对话框的应用程序,应用程序命名为AfxMessageBoxDemo,如下图所示。2、在打开的对话框中进行如下的处理,添加退出按钮和一个静态文本框,如下图所示。3、然后双击退出按钮对退出按钮添加响应函数,响应函数如下。4、程序运行如下。5、点击退出按钮后,程序运行如下,这样就完成...

MFC中如何得到对话框客户区中鼠标点下位置的坐标,具体代码。我的对话...
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point){ \/\/ TODO: Add your message handler code here and\/or call default CString str;str.Format("x = %d, y = %d", point.x, point.y);AfxMessageBox(str,MB_ICONQUESTION);CDialog::OnLButtonDown(nFlags, point);} ...

mfc AfxMessageBox 用MB_OKCANCEL或者MB_YESNO 按ok或cancel结果一样...
if (IDYES == AfxMessageBox("是否关闭?" , MB_YESNO) )PostQuitMessage(0);\/\/ define IDOK 1 define IDCANCEL 2 define IDABORT 3 define IDRETRY 4 define IDIGNORE 5 define IDYES 6 define IDNO 7

AfxMessageBox和MessageBox如何使用?
一、函数原型 AfxMessageBox:int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) –1 );在第一种形式中,lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的...

MFC AfxMessageBox() 简单问题 新手
VC8之后的版本创建的工程默认使用UNICODE字符串,带有_T()宏处理的字符串在编译时可以自动转换,不带这个宏的字符串是按照单字节处理,造成无法适配函数的参数。

相似回答