MFC,无边框的对话框如何实现窗体大小调整

MFC,无边框的对话框如何实现窗体大小调整,第1张

::MoveWindow(m_dlgPreGetSafeHwnd(), x, y, width, height, 1);//设置窗口大小
::ShowWindow(m_dlgPreGetSafeHwnd(), SW_SHOW); //显示窗口

提供一种方法供参考,
获得窗口矩形区域,判断鼠标位置,如果在窗口的边框附近,如鼠标位置到左边框的距离小于3,则设置光标为左右剪头,如果鼠标左键按下,则用moveWindow重新设置窗口的位置和大小,当然鼠标拖动时,你要计算窗口的大小

这个函数用在button中比较多

void CqqqqqDlg::OnPaint()  
{  
    if (IsIconic())  
    {  
        CPaintDC dc(this); // device context for painting   
  
        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dcGetSafeHdc()), 0);  
  
        // Center icon in client rectangle   
        int cxIcon = GetSystemMetrics(SM_CXICON);  
        int cyIcon = GetSystemMetrics(SM_CYICON);  
        CRect rect;  
        GetClientRect(&rect);  
        int x = (rectWidth() - cxIcon + 1) / 2;  
        int y = (rectHeight() - cyIcon + 1) / 2;  
  
        // Draw the icon   
        dcDrawIcon(x, y, m_hIcon);  
    }  
    else  
    {  
        //CDialog::OnPaint();//<span style="color:#6600cc;">注释此句,如果不注释的话,就放到结尾,原因何在呢?   
</span>       //贴背景   
        CPaintDC dc(this);  
        CBitmap bmpBk;  
        bmpBkLoadBitmapW(IDB_BITMAP_tempbk);  
        //m_bmpBKLoadBitmapW(IDB_BMPBK);   
        BITMAP bmpSize;  
        bmpBkGetBitmap(&bmpSize);//获取背景尺寸   
  
        CRect rect;  
        GetClientRect(&rect);//获取客户区尺寸   
  
        CDC dcMem;  
        dcMemCreateCompatibleDC(&dc);  
        dcMemSelectObject(&bmpBk);  
        dcStretchBlt(0,0,rectWidth(),rectHeight(),&dcMem,0,0,bmpSizebmWidth,bmpSizebmHeight,SRCCOPY);//将背景拉伸或者压缩copy至客户区   
        //贴背景   
    }  
}
我一般是这样设置背景的。

(自己想的方法,可能有更简单)
先弄个两个消息函数,就是鼠标左键按下和鼠标左键松开的消息函数(也有叫钩子函数的)。
按下的函数,确定鼠标是否在图形中,不在,就不 *** 作。
再定义一个鼠标移动函数,配合鼠标松开的消息,确定拖动的到的地点。
鼠标松开后,调用重绘函数,传递相关参数,绘制新的梯形。(这要看你的代码,做出相应修改。)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13390633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存