创建一个单文档应用程序 Ex-SDI,开始运行时主框架窗口的大小为屏幕的 1/4大小, 并移动到屏幕的右上角。当单击鼠标时,则状态栏上显示“你在(x,y)处双击鼠标”((x,y) 为鼠标在客户区的位置)。若再单击工具栏上的圆圈按钮呈正常状态,光标变成原来的箭开 形,双击鼠标,状态栏上将不再显示任何文本。
时间: 2024-03-23 07:37:24 浏览: 96
微信小程序-V2EX社区论坛小程序小程序项目源码-原生开发框架-含效果截图示例.zip
好的,这是一个关于MFC框架的问题。我会尽力回答你的问题,如果有不清楚的地方请指出。
首先,我们需要创建一个单文档应用程序 Ex-SDI。可以使用Visual Studio创建该应用。接下来,我们需要在主框架窗口类中添加以下代码:
```cpp
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// 设置窗口初始大小为屏幕的1/4
cs.cx = GetSystemMetrics(SM_CXSCREEN) / 4;
cs.cy = GetSystemMetrics(SM_CYSCREEN) / 4;
// 移动到屏幕的右上角
cs.x = GetSystemMetrics(SM_CXSCREEN) - cs.cx;
cs.y = 0;
return CFrameWnd::PreCreateWindow(cs);
}
```
这段代码在窗口创建前被调用,将窗口的大小设置为屏幕大小的1/4,然后将窗口移动到屏幕的右上角。
接下来,我们需要在视图类中添加双击鼠标的处理函数 OnLButtonDblClk,并在状态栏上显示鼠标在客户区的位置。可以使用以下代码:
```cpp
void CMyView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CString str;
str.Format(_T("你在(%d, %d)处双击鼠标"), point.x, point.y);
GetParentFrame()->SetMessageText(str);
}
```
这段代码在鼠标双击时被调用,获取鼠标位置并在状态栏上显示。
最后,我们需要在工具栏上添加一个圆圈按钮,并在按钮的单击事件中添加以下代码以清空状态栏:
```cpp
void CMainFrame::OnClearStatusBar()
{
GetMessageBar()->SetWindowText(_T(""));
}
```
这段代码在按钮单击时被调用,将状态栏文本设置为空字符串。
希望这些代码能够帮助你解决问题。
阅读全文