::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至客户区
//贴背景
}
}
我一般是这样设置背景的。(自己想的方法,可能有更简单)
先弄个两个消息函数,就是鼠标左键按下和鼠标左键松开的消息函数(也有叫钩子函数的)。
按下的函数,确定鼠标是否在图形中,不在,就不 *** 作。
再定义一个鼠标移动函数,配合鼠标松开的消息,确定拖动的到的地点。
鼠标松开后,调用重绘函数,传递相关参数,绘制新的梯形。(这要看你的代码,做出相应修改。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)