分享
 
 
 

如何在MDI客户区窗口响应鼠标双击消息?

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

CSDN - 专家门诊 - VC/MFC 界面问题

回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 保存 | 关闭窗口

主题: 如何在MDI客户区窗口响应鼠标双击消息?

作者: huyoo (空格键)

等级:

信 誉 值: 100

所属论坛: VC/MFC 界面

问题点数: 20

回复次数: 15

发表时间: 2004-5-15 4:48:26

大家知道,在PhotoShop中的客户区双击鼠标的话,将会弹出打开文件对话框;按住CTRL并双击鼠标的话,会执行新建命令.

我的目的就是,在MDI窗口的客户区中响应鼠标双击消息.

看了《深入MDI客户窗口编程》(在CSDN中有)之后, 我重载了PreTranslateMessage(MSG* pMsg)函数.使它能够在消息发送到TranslateMessage()和DispatchMessage() 函数以前预先解释消息.

可以重载该函数截获MDI客户窗口WM_LBUTTTONDBLCLK消息,我是这样做的:

1.在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CMDIFrameWnd::PreCreateWindow(cs) )

return FALSE;

return TRUE;

}

中添加cs.style|=CS_DBLCLKS;以防MDI窗口不响应双击消息.

2.重载PreTranslateMessage(MSG* pMsg)函数

添加代码如下:

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)

{

//if(pMsg->hwnd==m_hWndMDIClient && pMsg->message==WM_LBUTTONDOWN)

//PostMessage(WM_LBUTTONDOWN);

//我在这里注释掉拦截鼠标单击的消息,是因为客户区响应了鼠标单击的消息

//而没有响应鼠标双击的消息

if(pMsg->hwnd==m_hWndMDIClient && pMsg->message==WM_LBUTTONDBLCLK)

PostMessage(WM_LBUTTONDBLCLK);

return CMDIFrameWnd::PreTranslateMessage(pMsg);

}

3.在CMainFrame中添加WM_LBUTTONDOWN和WM_LBUTTONDBLCLK消息的响应:

void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)

{

AfxMessageBox("客户区单击鼠标了!");

CMDIFrameWnd::OnLButtonDblClk(nFlags, point);

}

void CMainFrame::OnLButtonDblClk(UINT nFlags, CPoint point)

{

AfxMessageBox("客户区双击鼠标了!");

CMDIFrameWnd::OnLButtonDblClk(nFlags, point);

}

4.编译,通过了!

>>>>>>>执行,关掉新建的文档,测试结果:

#单击鼠标左键:没反应

#双击鼠标左键:没反应

5.将CMainFrame::PreTranslateMessage(MSG* pMsg)中取消对WM_LBUTTONDOWN的注释,编译通过并执行,关掉新建的文档,测试结果:

#单击鼠标左键:弹出对话框

#双击鼠标左键:没反应

我不知道该怎么办了,请大家帮助我!!!!!SOS!!!

谢谢大家里!!!

huyoo@2004/5/15

---------------------------------------------------

回复人: enoloo(行者无疆) ( ) 信誉:102 2004-5-15 8:15:59 得分:0

if(pMsg->hwnd==GetActiveFrame() ->GetActiveView()->m_hWnd && pMsg->message==WM_LBUTTONDBLCLK)

正常childframe是不接收dbclick的,他的视图接收。你可以处理视图的dbclick,然后发消息给app,通知建立新文档。

//我搜了,找不到,楼主可否给个连接,谢谢~

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-5-15 10:23:04 得分:0

测试中...

childframe的视图View是接收DBClick,但是我要的不是这个,因为一个childframe就是一个新文档,而不是MDI窗口的客户区.

哇,像 enoloo(行者无疆) 所说,在第二步中那样改,结果在进行第四步:4.编译,

>>>>>>>执行,关掉新建的文档,测试结果:

一点ChildFrame的关闭按钮,就出现MDIClientMSG.exe发生错误需要关闭,问我要不要发送报告.$%^$^&*(省去若干抱怨字数...)

我要的效果就是无论在MainFrame中有没有ChildFrame(子文档窗口),只要露出一部分MDIClient客户区,双击那灰色的MDIClient客户区,就弹出打开文件对话框.^_~

//我搜遍了CodeProject和CodeGURU,没有发现有这方面的文章和例子.(!_!)

//中国的网站就更不用说了.@_@

你说它(MDIClient客户区)为什么就能够响应鼠标单击(无论左右键)呢,就是不肯响应左键单击(也是无论左右键)呢?

期待那位大侠解决ing...

huyoo@2004/5/15/10:10:18

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-5-15 10:46:40 得分:0

//寒!!!!

//你问的可能是《深入MDI客户窗口编程》(在CSDN中有)的链接吧?

//http://expert.csdn.net/Expert/topic/3043/3043812.xml?temp=.7111627

主题: VC 编程经验总结 1.1 ( VC Programming Skills 1.1 )

作者: sgnaw (李逍遥)

里面有一篇《深入MDI客户窗口编程》和一篇《在MDI主框架窗口中添加位图》

去下载吧

我从这里下载的(国内的几个链接好像都下不了):

http://lingrer.spymac.net/collection/VC200402.chm

&_^###########################################

huyoo@2004/5/15

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-5-15 10:50:15 得分:0

补充:《深入MDI客户窗口编程》和《在MDI主框架窗口中添加位图》这两篇都在--VC/MFC 界面类中.

&_^###########################################

huyoo@2004/5/15

---------------------------------------------------

回复人: A_Qiao() ( ) 信誉:100 2004-05-17 16:22:00 得分:0

我仔细读了一下关于鼠标双击消息的说明,发现MSDN中是这样说的

Only windows that have the CS_DBLCLKS style can receive WM_LBUTTONDBLCLK

^^^^^^^^^^^^^^^^^^

messages, which the system generates whenever the user presses, releases, and again presses the left mouse button within the system's double-click time limit. Double-clicking the left mouse button actually generates four messages: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK, and WM_LBUTTONUP again.

因此我认为造成你的问题的原因应该是MDI的客户区窗口类没有CS_DBLCLKS属性,因此它接收不到双击消息。解决的办法就是用函数GetClassLong()和SetClassLong()把CS_DBLCLKS属性给加上。我已经试过了,证实了我的猜测。

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-05-21 14:43:00 得分:0

你能够把你的程序具体实现贴上来看一下吗?我在CMainFrame::OnCreate(...)中添加了

DWORD clientstyle;

clientstyle=GetClassLong(m_hWndMDIClient,GWL_STYLE);

clientstyle|=CS_DBLCLKS;

clientstyle=SetClassLong(m_hWndMDIClient,GWL_STYLE,clientstyle);

没有成功

后来改到BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中

也没有成功!!!

//==================================================================

后来我在OnCreateClient中添加下面的:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

lpcs->style|=CS_DBLCLKS;

return CMDIFrameWnd::OnCreateClient(lpcs, pContext);

}

还会是没有成功,没有响应~~~~~

请帮帮忙!!!

huyoo@2001/05/21

---------------------------------------------------

回复人: A_Qiao() ( ) 信誉:100 2004-05-22 12:56:00 得分:0

我的实现方法跟你的有所不同,是用SubclassWindow做的,但是原理是一样的. 我仔细看了一下你的方法,觉得问题可能在以下几个方面;

(1)在OnCreate的时候,可能m_hWndMDIClient还没有准备好,因此没有成功

(2)如果OnCreate的时候m_hWndMDIClient还没有准备好, 在PreCreateWindow的时候可能也没准备好.

(3)在OnCreateClient里,参数LPCREATESTRUCT lpcs中的style是窗口的style, 不要跟窗口类的style搞混了.窗口的style都是WS_开头的,而窗口类的style是CS_开头的.

结论:

应该在OnCreateClient函数中用SetClassLong(), 而不是用lpcs->style|=CS_DBLCLKS

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-05-23 05:07:00 得分:0

按照A_Qiao()所说,我把CMainFrame::OnCreateClient中的代码改为如下:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

//lpcs->style|=WS_CAPTION;//CS_DBLCLKS;

//lpcs->lpszClass=_T("mdiclient");

DWORD clientstyle;

clientstyle=::GetClassLong(m_hWndMDIClient,GWL_STYLE);

clientstyle|=CS_DBLCLKS;

::SetClassLong(m_hWndMDIClient,GWL_STYLE,clientstyle);

return CMDIFrameWnd::OnCreateClient(lpcs, pContext);

}

调试通过,但是还是没有反应!!!!!!!!

如果真的象上面的回答那样的话,应该成功的.不过,嘿嘿...

我自己跟踪调试了一下,发现

CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)调用了CMDIFrameWnd::OnCreate(lpCreateStruct),

在CMDIFrameWnd::OnCreate(lpCreateStruct)中又完成了PreCreateWindow和OnCreateClient,所以,说(1)和(2)是不对的.

(3)也不能够实现.

因为既然OnCreateClient发生在CMainFrame::OnCreate之前,在OnCreate之后,m_hWndMDIClient还没有准备好,

那么在OnCreateClient中,m_hWndMDIClient还没有准备好就更没有准备好了~~~~~~~~~~~

#########

huyoo@2001/05/23

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-05-23 05:21:00 得分:0

补充几点:

## 我在CMainFrame::OnCreateClient中,利用GetClassLong和SetClassLong,想修改MDI客户区的类结构信息,使用了GWL_STYLE参数,犯了一个错误,应该是GCL_STYLE.

##在CMainFrame::OnCreateClient中,我好像没有对函数的参数进行什么修改,可能是不反应的一个原因.

## 在CMainFrame::OnCreateClient中有一段:

//lpcs->style|=WS_CAPTION;//CS_DBLCLKS;

//lpcs->lpszClass=_T("mdiclient");

原来我有这么一句:lpcs->style|=WS_VSCROLL,调试的时候,发现在一个内部函数中,主窗口函数不允许MDI 客户区有WS_VSCROLL和WS_HSCROLL(能够上下,左右滚动窗口)的窗口风格,在这里给大家一点提示^_^

不过我用下面这一句的时候也没有任何变化或者效果产生

lpcs->style|=WS_CAPTION;

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-05-23 06:46:00 得分:0

::::::::::::::::::::::::::::对A_Qiao()所说::::::::::::::::

我又用了子类化去解决:

1.用ClassWizard创建一个基类为CWnd的窗口类,命名为CNewClientWnd.

2.在CMainFrame中添加类型为第1步中创建的窗口类CNewClientWnd的成员变量,命名为m_wndNewClient.

3.在CMainFrame的成员函数OnCreate中,对基类CMDIFrameWnd::OnCreate()的调用之后,

添加一条对SubClassWindow()的调用语句.

//==========================================

//子类化窗口m_hWndMDIClient

if (!m_wndNewClient.SubclassWindow(m_hWndMDIClient))

{

TRACE("Failed to subclass MDI client window\n");

return -1;// fail to create

}

//====================================

m_hWndMDIClient是CMDIFrameWnd的成员变量,包含了MDI客户窗口的句柄。

4.分别添加CNewClientWnd的OnLButtonDown(为了对比用的)和OnLButtonDblClk的消息响应处理:

void CNewClientWnd::OnLButtonDblClk(UINT nFlags, CPoint point)

{

AfxMessageBox("左键在客户区双击了!");

CWnd::OnLButtonDblClk(nFlags, point);

}

void CNewClientWnd::OnLButtonDown(UINT nFlags, CPoint point)

{

//AfxMessageBox("左键在客户区按下了!");

CWnd::OnLButtonDown(nFlags, point);

}

5.在CMainFrame类中添加CreateClient处理,目的是是客户区窗口能够接受双击:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

DWORD st;

st=::GetClassLong(m_wndNewClient.m_hWnd/*m_hWndMDIClient*/,GCL_STYLE);

st|=CS_DBLCLKS;

::SetClassLong(m_wndNewClient.m_hWnd/*m_hWndMDIClient*/,GCL_STYLE,st);

return CMDIFrameWnd::OnCreateClient(lpcs, pContext);

}

6.编译通过,执行,还是没有反应.

请 啊A_QIAO()告诉我,你是怎么样实现的,并且我想知道,你的程序响应了客户区的鼠标双击事件吗?

谢谢!!

huyoo@2004/05/23

---------------------------------------------------

回复人: Mackz(在相互) ( ) 信誉:99 2004-05-23 10:49:00 得分:0

按照《深入MDI客户窗口编程》和《在MDI主框架窗口中添加位图》这两篇文章的介绍,子类化客户区窗口。

注意,基类不是CWnd。

---------------------------------------------------

回复人: kongyunzhongque(云雀) ( ) 信誉:120 2004-05-23 16:48:00 得分:0

BOOL CNewClientWnd::OnEraseBkgnd(CDC* pDC)

{

::SetClassLong(GetSafeHwnd(),GCL_STYLE,::GetClassLong(m_hWnd,GCL_STYLE) | CS_DBLCLKS);

通过验证,可能放的不是地方,不过就是这种思路了

---------------------------------------------------

回复人: _foo(void)//莫名函数:) ( ) 信誉:163 2004-05-23 17:19:00 得分:0

一两年以前回答过相关问题,好像还进faq了,刚才找了一下找不到

http://www.codeproject.com/dialog/mdibackgroundimage.asp

基本上可以参考这个文章的.

给mdiclient窗口加上CS_DBLCLKS风格并处理消息就可以了.

关键是mdiclient窗口句柄获得的问题

我试过该文代码

HWND hMain = pMainFrame->GetWindow(GW_CHILD)->GetSafeHwnd();

pfnOldWndProc = (WNDPROC)GetWindowLong(hMain, GWL_WNDPROC);

SetWindowLong(hMain, GWL_WNDPROC, (long)pfnNewWndProc);

是没问题的,

至于CMDIFrameWnd::m_hWndMDIClient这个成员变量没用过.

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-05-23 21:43:00 得分:0

//=======================

感谢大家的回答!!!

我测试了你们说的两种方案,发现:

## kongyunzhongque(云雀) 的方案实现的很好,响应了!!我好高兴啊!!

对他所说的位置,我试了另外的地方:

[注]我下面测试的,都是测试完一个之后,注释掉,然后进行下一个的测试.

在CNewClientWnd类中:

1.void CNewClientWnd::PreSubclassWindow(){}中,可行~~~,响应了!!!!!!!!!

2.int CNewClientWnd::OnCreate(lpCreateStruct){}中,实现不了,不响应

3.BOOL CNewClientWnd::PreCreateWindow(CREATESTRUCT& cs){}中,实现不了,不响应

4.void CNewClientWnd::OnPaint()

{

CPaintDC dc(this); // device context for painting

::SetClassLong(GetSafeHwnd(),GCL_STYLE,

::GetClassLong(m_hWnd,GCL_STYLE) | CS_DBLCLKS);

// Do not call CWnd::OnPaint() for painting messages

}

也实现了,响应!!!~~

5.void CNewClientWnd::OnShowWindow(bShow,nStatus){}中,实现不了,不响应

其他的,就没有多测试.请大家自己去试试...

最好的位置是在哪里呢,我个人以为既然实现了,

在void CNewClientWnd::PreSubclassWindow(){}中应该是最好了.

在在CMainFrame类中:

我把::SetClassLong(GetSafeHwnd(),GCL_STYLE,

::GetClassLong(m_hWnd,GCL_STYLE) | CS_DBLCLKS);

改为

::SetClassLong(m_wndNewClient.m_hWnd,GCL_STYLE,

::GetClassLong(m_wndNewClient.m_hWnd,GCL_STYLE) | CS_DBLCLKS);

然后加入到下面的过程中去.

1.BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){}中,实现不了,不响应

2.int CMainFrame::OnCreate(lpCreateStruct){}中,跟在子类化窗口m_hWndMDIClient语句之后,实现了,响应双击!!!!!!!

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

//==========================================

//子类化窗口m_hWndMDIClient

if (!m_wndNewClient.SubclassWindow(m_hWndMDIClient))

{

TRACE("Failed to subclass MDI client window\n");

return -1;// fail to create

}

//====================================

::SetClassLong(m_wndNewClient.m_hWnd,GCL_STYLE,

::GetClassLong(m_wndNewClient.m_hWnd,GCL_STYLE) | CS_DBLCLKS);

//====================================

...

}

3.BOOL CMainFrame::OnCreateClient(lpcs, pContext){}中没有实现,不响应.

4.void CMainFrame::OnPaint(){}中,实现了,响应双击!!!!!!!

5.BOOL CMainFrame::OnEraseBkgnd(CDC* pDC){}中,也实现了,响应双击!!!!!!!

//=====================================================//

## _foo(void)//莫名函数的方案:

[注]我用在那个(不使用子类化的)程序中.

使用下面的代码:

HWND hMDIClientArea = GetWindow(GW_CHILD)->GetSafeHwnd();

::SetClassLong(hMDIClientArea,GCL_STYLE,

::GetClassLong(hMDIClientArea,GCL_STYLE) | CS_DBLCLKS);

然后加入到下面的过程中去.

1.BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){}中,实现不了,不响应

2.int CMainFrame::OnCreate(lpCreateStruct){}中

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

HWND hMDIClientArea = GetWindow(GW_CHILD)->GetSafeHwnd();

::SetClassLong(hMDIClientArea,GCL_STYLE,

::GetClassLong(hMDIClientArea,GCL_STYLE) | CS_DBLCLKS);

...

}

实现了,响应双击!!!!!!!

3.BOOL CMainFrame::OnCreateClient(lpcs, pContext){}中没有实现,不响应.

4.void CMainFrame::OnPaint(){}中,实现了,响应双击!!!!!!!

5.BOOL CMainFrame::OnEraseBkgnd(CDC* pDC){}中,也实现了,响应双击!!!!!!!

//===================================================//

所以结论是:

无论是子类化的CNewClientWnd,还是CMainFrame,在OnPaint()和OnEraseBkgnd()中,只要对m_hWndMDIClient进行改变类信息操作,都可以实现响应鼠标双击.

在各自的Create事件中,只有在CMainFrame的OnCreate()中修改m_hWndMDIClient的类信息,才可以响应鼠标双击.

到此,我的问题算是得到了解决.还有一些东西需要自己去总结,摸索,和大家交流!

我想我前面没有实现,很有可能是没有取到真正的客户区句柄(m_hWndMDIClient),像GetSafeHwnd()函数,我用的还是不多,今后应该注意;另外一个很大的错误就是把GCL_STYLE(取得类的风格)错成了GWL_STYLE(取出窗口的风格),很长时间得不到结果,值得注意.

另外,在子类化的例子中,下面的代码:

DWORD clientstyle;

clientstyle=::GetClassLong(m_hWndMDIClient,GCL_STYLE);

clientstyle|=CS_DBLCLKS;

clientstyle=::SetClassLong(m_hWndMDIClient,GCL_STYLE,clientstyle);

用在CMainFrame的OnCreate()中,和

::SetClassLong(m_wndNewClient.m_hWnd,GCL_STYLE,

::GetClassLong(m_wndNewClient.m_hWnd,GCL_STYLE) | CS_DBLCLKS);

的效果是一样的~~~~~~~~~~~

祝大家学习进步,生活快乐,工作顺利!!!!

++++++++++++++++++++++++++++++

huyoo@2004/05/23

++++++++++++++++++++++++++++++

---------------------------------------------------

回复人: huyoo(空格键) ( ) 信誉:100 2004-05-23 21:47:00 得分:0

=============================================

=::::::给所有回答我这个问题的专家们:::::::::=

=============================================

首先,感谢你们对我这个问题热情洋溢的回答!解开了让我久久困扰的疑问.

然后,我想说,这不是仅仅对我的问题的解答,而且对将来想实现在客户区响应鼠标双击事件的VC学习者和开发者

也有极大的帮助,你们功不可没!!让他们少走很多弯路.

最后,表示抱歉:我本来以为这是一个很简单的问题,所以只给了20分.没有想到这个问题好久竟然得不到解决,解决的时候,引来了这么多的高手,实在是抱歉,不能给太多的分了!!

今天,我想结束这个帖子了,希望有好办法的人快来发表意见!!

谢谢大家!!

++++++++++++++++++++++++++++++

huyoo@2004/05/23

++++++++++++++++++++++++++++++

---------------------------------------------------

Copyright ? CSDN.net, Inc. All rights reserved

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有