• C++ 无边框的拖动窗口代码


    按下鼠标时,记录下鼠标在窗体上的坐标, 同时用一个BOOL变量记录下鼠标左键按下的状态

    弹起左键,则记录状态的布尔变量为FALSE.

    处理鼠标移动事件,如果左键同时按下,则为鼠标拖动窗体运动,设置窗体新的左上角坐标。

    view plaincopy to clipboardprint?
    ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······15001.void CNoBorderFormDlg::OnMouseMove(UINT nFlags, CPoint point) 

        // TODO: 在此添加消息处理程序代码和/或调用默认值 
     
        CDialog::OnMouseMove(nFlags, point); 
        if (this->_leftButtonDown) 
        { 
           /// 鼠标左键按下时,可以拖动窗体 
            CPoint pointChanged = point - (this->_mousePoint); 
            RECT rect; 
            this->GetWindowRect(&rect); 
            this->SetWindowPos(NULL, rect.left pointChanged.x, rect.top pointChanged.y, 0, 0, SWP_NOSIZE); 
        } 

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

        // TODO: 在此添加消息处理程序代码和/或调用默认值 

        CDialog::OnLButtonDown(nFlags, point); 
        this->_leftButtonDown = TRUE; 
        this->_mousePoint = CPoint(point); 

     
    void CNoBorderFormDlg::OnLButtonUp(UINT nFlags, CPoint point) 

       // TODO: 在此添加消息处理程序代码和/或调用默认值 
     
        CDialog::OnLButtonUp(nFlags, point); 
        this->_leftButtonDown = FALSE; 

     
    void CNoBorderFormDlg::OnMouseLeave() 

        // TODO: 在此添加消息处理程序代码和/或调用默认值 
        CDialog::OnMouseLeave(); 
        this->_leftButtonDown = FALSE; 
    }

  • 相关阅读:
    图解排序算法(三)之堆排序
    博客园添加看板娘
    php设计模式
    PHP二维数组排序 array_multisort
    php-jwt-token
    c++实现冒泡排序
    常见的排序 转
    Mac VMware Fusion CentOS7配置静态IP
    vmwar快照和克隆区别
    springboot maven打包插件
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/4052893.html
Copyright © 2020-2023  润新知