VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 776|回复: 5

[求助] 在VC++中实现无标题栏对话框的拖动问题

[复制链接]
80_avatar_middle
在线会员 发表于 2015-9-11 09:43:25 | 显示全部楼层 |阅读模式
10驿站币
按照网上资料及源码一步步都做了  还是无法拖动

方法代码是:

        1 :   afx_msg UINT OnNcHitTest(CPoint point);

        2 :   ON_WM_NCHITTEST()

        3 :   UINT CClientDlg::OnNcHitTest(CPoint pt)
              {
                CRect rc;
                GetClientRect(&rc);
                ClientToScreen(&rc);
                return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt);
              }

//////////////////////////////////////////////////////////////////////////////////////

是不是和这段透明代码有关系  我是小白  不太看懂代码


        ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);//TopMost
       
        SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
                GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);


        HINSTANCE hInst = LoadLibrary("User32.DLL");
        if(hInst)
        {
                typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
                MYFUNC fun = NULL;
                //取得SetLayeredWindowAttributes函数指针
                fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
                if(fun)fun(this->GetSafeHwnd(),0,220,2);
                FreeLibrary(hInst);
        }

最佳答案

查看完整内容

virtual BOOL PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_LBUTTONDOWN: ::SendMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, NULL); default: break; } return CDialog::PreTranslateMessage(pMsg); }




上一篇:大家多多帮忙啊
下一篇:关于窗口类注册的问题,请大神指点一下。
22_avatar_middle
在线会员 发表于 2015-9-11 09:43:26 | 显示全部楼层
virtual BOOL PreTranslateMessage(MSG* pMsg)
        {
                switch (pMsg->message)
                {
                case WM_LBUTTONDOWN:
                        ::SendMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, NULL);       
                default:
                        break;
                }
                return CDialog::PreTranslateMessage(pMsg);
        }

评分

参与人数 2威望 +2 驿站币 +1 热心值 +3 收起 理由
80_avatar_small 张靖 + 1 + 1 很给力!
51_avatar_small Syc + 2 + 2 很给力!

查看全部评分

80_avatar_middle
ico_lz  楼主| 发表于 2015-9-11 16:52:21 | 显示全部楼层
wwhwayne 发表于 2015-9-11 09:43
virtual BOOL PreTranslateMessage(MSG* pMsg)
        {
                switch (pMsg->message)

完美解决    非常感谢
80_avatar_middle
ico_lz  楼主| 发表于 2015-9-11 17:19:30 | 显示全部楼层
本帖最后由 张靖 于 2015-9-11 17:21 编辑
wwhwayne 发表于 2015-9-11 09:43
virtual BOOL PreTranslateMessage(MSG* pMsg)
        {
                switch (pMsg->message)


大神  又遇到一个问题  :PreTranslateMessage这个函数下的代码是程序客户区按钮双击才能响应事件   而不是单击响应
在VC++中实现无标题栏对话框的拖动问题

我在这个函数下添加了以下代码:
在VC++中实现无标题栏对话框的拖动问题



问如何改良
在VC++中实现无标题栏对话框的拖动问题
在VC++中实现无标题栏对话框的拖动问题
22_avatar_middle
在线会员 发表于 2015-9-14 12:59:06 | 显示全部楼层
如果要双击响应,就在case WM_LBUTTONDBLCLK:这里做你想做的事情

点评

完美解决 谢谢你  发表于 2015-9-15 08:32

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
80_avatar_small 张靖 + 1 + 1 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-24 16:13

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表