新手求救关于有标题栏 移动问题很诡异 送上全部分数

puwu988 2014-05-31 04:22:58
问题如下 一个对话框窗口都可以 如果他带标题栏鼠标点击标题栏就可以移动窗口对吧, 如果去掉标题栏 可以直接在客户端模拟WM_NCLBUTTON 消息, 现在问题如下 我的捕鱼程序如果点击标题栏他就不会渲染游戏了,原因是默认的标题栏消息被处理了, 所有我现在必须要手动重载 标题栏 移动 这几个消息 来自己移动窗口, 代码如下
if (pMsg->message == WM_NCLBUTTONDOWN)
{
return TRUE;
}
if (pMsg->message == WM_NCLBUTTONUP)
{
return TRUE;
}
if (pMsg->message == WM_NCMOUSEMOVE)
{
return TRUE;
}
return CWnd::PreTranslateMessage(pMsg); 高手请帮我看看如何写 效果就是要鼠标点击标题栏移动,

说白了 就是自己处理标题栏这三个消息 让窗口移动 不用默认处理 这就是我的需求, 不然的话希望大神们帮我写写代码把, 我都不敢问别人了 都不给我说说我是菜鸟!送上全部分
...全文
177 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyx100 2014-06-02
  • 打赏
  • 举报
回复
引用 3 楼 schlafenhamster 的回复:
窗口移动时,"就不会渲染游戏"!
schlafenhamster 2014-06-01
  • 打赏
  • 举报
回复
5楼代码有点问题,改正:

void CMyImageDlg::OnNcMouseMove(UINT nHitTest, CPoint point) 
{
static CPoint lastPt;
	CRect rc;
	GetWindowRect(rc);
	while(GetAsyncKeyState(VK_LBUTTON) & 0x8000)
	{// afxDump << lastPt << "\n";
		MoveWindow(rc.left+point.x-lastPt.x,rc.top+point.y-lastPt.y,rc.Width(),rc.Height());
		GetCursorPos(&point);
	}
	lastPt=point;
	
//	CDialog::OnNcMouseMove(nHitTest, point);
}
这段代码放 : OnNcHitTest(CPoint point) 将使 全窗口 都可以移动.
schlafenhamster 2014-06-01
  • 打赏
  • 举报
回复
看看你的: case WM_NCLBUTTONDOWN: ///////////////////////////////////////////////////////////////// WM_NCLBUTTONDOWN nHittest = (INT) wParam; // hit-test value pts = MAKEPOINTS(lParam); // position of cursor
puwu988 2014-06-01
  • 打赏
  • 举报
回复
兄弟还是不行可以加下我QQ吗 直接MFC 可以我这个是捕鱼程序就有那个问题QQ495167321
schlafenhamster 2014-06-01
  • 打赏
  • 举报
回复
看看在::OnNcLButtonDown 下 行不行?

//
void CMyImageDlg::OnNcLButtonDown(UINT nHitTest, CPoint point) 
{
static CPoint lastPt;
	lastPt=point;
	if(nHitTest==HTCAPTION)
	{
		CRect rc;
		GetWindowRect(rc);
		while(GetAsyncKeyState(VK_LBUTTON) & 0x8000)
		{// 
			afxDump << lastPt << "\n";
			MoveWindow(rc.left+point.x-lastPt.x,rc.top+point.y-lastPt.y,rc.Width(),rc.Height());
			GetCursorPos(&point);
		}
	}
	else
	{
		CDialog::OnNcLButtonDown(nHitTest, point);
	}
}
schlafenhamster 2014-06-01
  • 打赏
  • 举报
回复
MFC 上: void CMyImageDlg::OnNcLButtonDown(UINT nHitTest, CPoint point) { // CDialog::OnNcLButtonDown(nHitTest, point); } 必须注释掉, 否则: void CMyImageDlg::OnNcMouseMove(UINT nHitTest, CPoint point) { static CPoint lastPt; CRect rc; GetWindowRect(rc); while(GetAsyncKeyState(VK_LBUTTON) & 0x8000) {// only no OnNcLButtonDown() afxDump << lastPt << "\n"; MoveWindow(rc.left+point.x-lastPt.x,rc.top+point.y-lastPt.y,rc.Width(),rc.Height()); GetCursorPos(&point); } lastPt=point; // CDialog::OnNcMouseMove(nHitTest, point); } 你的移动不是这段代码的结果 (afxDump << lastPt << "\n"; 无输出, OutputDebugStri())
puwu988 2014-06-01
  • 打赏
  • 举报
回复
楼上的代码可以移动但是有个问题 如果我单机标题栏移动 但是他就是黑色的了没渲染, 你给我的代码 只是移动做了处理 case WM_NCLBUTTONDOWN: 你还是给了系统处理 case WM_NCLBUTTONDOWN: { return DefWindowProc(hwnd, msg, wparam, lparam); } case WM_NCMOUSEMOVE://截取消息 { POINT point; point.x = LOWORDINT(lparam); point.y =HIWORDINT(lparam); RECT rc; GetWindowRect(hwnd,&rc); while(GetAsyncKeyState(VK_LBUTTON) & 0x8000) {// afxDump << lastPt << "\n"; MoveWindow(hwnd,rc.left+point.x-pHGE->lastPt.x,rc.top+point.y-pHGE->lastPt.y,rc.right,rc.bottom,TRUE); GetCursorPos(&point); } pHGE->lastPt=point; return TRUE; } 我想要的效果是 结合 WM_NCLBUTTONDOWN 和移动消息来做这个功能可以嘛 分数我在给你加100谢谢了
Eleven 2014-05-31
  • 打赏
  • 举报
回复
WM_NCHITTEST
schlafenhamster 2014-05-31
  • 打赏
  • 举报
回复
一个就够了 void CxxxxxxDlg::OnNcMouseMove(UINT nHitTest, CPoint point) { // if(nHitTest==HTCAPTION) CDialog::OnNcMouseMove(nHitTest, point); static CPoint lastPt; while(GetAsyncKeyState(VK_LBUTTON) & 0x8000) { CRect rc; GetWindowRect(rc); rc.OffsetRect(-rc.left,-rc.top); MoveWindow(point.x-lastPt.x,point.y-lastPt.y,rc.Width(),rc.Height()); } lastPt=point; }
puwu988 2014-05-31
  • 打赏
  • 举报
回复
现在不管移动渲染了 只要自己重载那三个消息 移动窗口 就行
schlafenhamster 2014-05-31
  • 打赏
  • 举报
回复
窗口移动时,"就不会渲染游戏"!
puwu988 2014-05-31
  • 打赏
  • 举报
回复
哥们 没效果图 就是做成能移动窗口就可以if (pMsg->message == WM_NCLBUTTONDOWN) { return TRUE; } if (pMsg->message == WM_NCLBUTTONUP) { return TRUE; } if (pMsg->message == WM_NCMOUSEMOVE) { return TRUE; } 在这三个消息里面移动 窗口 不用默认处理就这个功能!
schlafenhamster 2014-05-31
  • 打赏
  • 举报
回复
能不能上点 程序 效果图?

16,472

社区成员

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

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

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