在线!!如何将主对话框分成几个不规则的区域,并贴上位图,响应鼠标消息? 基于对话筐的应用程序。谢谢帮忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CRgn wndRgn, rgnTemp;rgnTemp.CreateRectRgn(100, 100, 300, 500);wndRgn.CreateRectRgn(0, 0, cRect.Width(), cRect.Height());wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_XOR);这样你可以多做几个这样的CRgn,然后把他们联合起来,成为一个CRgn然后再程序中的鼠标的LButtonDown中写入if(point.PtInRgn(wndRgn)){ //写入你的相应代码} 嘻~ 我刚刚做了一个 :)http://windz.jzwm.com/download/35Fonts.zip办法吗~~~ 当然是世界上最笨的了哈 ~片段如下: case WM_PAINT: { hdc=BeginPaint(hwnd,&ps); //画背景图片 SelectObject(hMem, hBmp); BitBlt(hdc, 0, 0, 300, 120, hMem, 0, 0, SRCCOPY); //画关闭窗口的按钮 SelectObject(hMem, hBmp1); BitBlt(hdc, 280, 3, 293, 16, hMem, 0, 0, SRCCOPY); //画安装按钮 SelectObject(hMem, hBmp2); BitBlt(hdc, 50, 80, 115, 102, hMem, 0, 0, SRCCOPY); //画退出按钮 SelectObject(hMem, hBmp3); BitBlt(hdc, 185, 80, 250, 102, hMem, 0, 0, SRCCOPY); EndPaint(hwnd,&ps); return 0; }break; case WM_MOUSEMOVE: { //移动到到安装按钮时 if(((mouse_x >=50) && (mouse_y >=80)) && ((mouse_x <= 115) && (mouse_y <=102))) { SelectObject(hMem, hBmp4); BitBlt(hdc, 50, 80, 115, 102, hMem, 0, 0, SRCCOPY); mIs = 1; SendMessage(hwnd, WM_USER, 0, 0); return 0; } else { SelectObject(hMem, hBmp2); BitBlt(hdc, 50, 80, 115, 102, hMem, 0, 0, SRCCOPY); mIs = 0; SendMessage(hwnd, WM_USER, 0, 0); } //移动到退出按钮 if(((mouse_x >=185) && (mouse_y >=80)) && ((mouse_x <= 250) && (mouse_y <=102))) { SelectObject(hMem, hBmp5); BitBlt(hdc, 185, 80, 250, 102, hMem, 0, 0, SRCCOPY); mIs = 2; SendMessage(hwnd, WM_USER, 0, 0); return 0; } else { SelectObject(hMem, hBmp3); BitBlt(hdc, 185, 80, 250, 102, hMem, 0, 0, SRCCOPY); mIs = 0; SendMessage(hwnd, WM_USER, 0, 0); }GOOD LUCK!~ 好,我看看。有没有MFC下实现的? 贴图,不很简单吗直接用bitblt就可以了你先建一个CBitmap bitmap;bitmap.LoadImage(IDD_SOURCE);CLientDC dc(this)CDC memdc;memdc.CreateComptialDC(dc);memdc.SelectObject(&bitmap);dc.Bitblt(x,y,100,100,&memdc......);你试一下吧 spwnihao(海盗) 这能把位图贴到不规则的区域吗? 当然那种贴图方式,自能贴矩形的图形,你要贴到不规则区域,就得想别的办法了,我有一个办法就是,你在你的不规则区域画一个多边形,然后用画刷进行填充,你的画刷选择一个CBitmap,就可以了,当然你得不规则图形肯定能变成一个多边形(边足够多),你试一下吧 在对话框上能直接用GDI函数画图马?告诉我怎么做,我就结贴!谢谢! 可以在对话框上直接绘图的CDC dc;dc=GetDC();这样你就得到了对话框的设备环境DC; 100分求邮件发送附件到hotmail的问题 高手们,给个思路吧? ★★★★★升三角了!!!!!!!!!散分☆☆☆☆☆ 如果得到被创建进程的输出流 请问如何给树控件(CTreeCtrl)加上背景图片? 大家好,怎样切换按钮的颜色? 请问browser helper object 能否监控webbrowser控件 *在windows下编程,判定一个目录是否存在,用什么函数阿?* 怎样实现象IE那样的在菜单或工具栏右侧的动态图案? 物理坐标,DP,LP的涵义及使用场合? 请教高人:如何做sdk下的组合框和进度条(急) 如果一台运行组件的机器crash了,如何自动启用另外一台机器上的组件服务??
rgnTemp.CreateRectRgn(100, 100, 300, 500);
wndRgn.CreateRectRgn(0, 0, cRect.Width(), cRect.Height());
wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_XOR);
这样你可以多做几个这样的CRgn,然后把他们联合起来,成为一个CRgn
然后再程序中的鼠标的LButtonDown中写入
if(point.PtInRgn(wndRgn))
{
//写入你的相应代码
}
http://windz.jzwm.com/download/35Fonts.zip办法吗~~~ 当然是世界上最笨的了哈 ~
片段如下:
case WM_PAINT:
{
hdc=BeginPaint(hwnd,&ps);
//画背景图片
SelectObject(hMem, hBmp);
BitBlt(hdc, 0, 0, 300, 120, hMem, 0, 0, SRCCOPY);
//画关闭窗口的按钮
SelectObject(hMem, hBmp1);
BitBlt(hdc, 280, 3, 293, 16, hMem, 0, 0, SRCCOPY);
//画安装按钮
SelectObject(hMem, hBmp2);
BitBlt(hdc, 50, 80, 115, 102, hMem, 0, 0, SRCCOPY);
//画退出按钮
SelectObject(hMem, hBmp3);
BitBlt(hdc, 185, 80, 250, 102, hMem, 0, 0, SRCCOPY);
EndPaint(hwnd,&ps);
return 0;
}break; case WM_MOUSEMOVE:
{
//移动到到安装按钮时
if(((mouse_x >=50) && (mouse_y >=80)) && ((mouse_x <= 115) && (mouse_y <=102)))
{
SelectObject(hMem, hBmp4);
BitBlt(hdc, 50, 80, 115, 102, hMem, 0, 0, SRCCOPY);
mIs = 1;
SendMessage(hwnd, WM_USER, 0, 0);
return 0;
}
else
{
SelectObject(hMem, hBmp2);
BitBlt(hdc, 50, 80, 115, 102, hMem, 0, 0, SRCCOPY);
mIs = 0;
SendMessage(hwnd, WM_USER, 0, 0); }
//移动到退出按钮
if(((mouse_x >=185) && (mouse_y >=80)) && ((mouse_x <= 250) && (mouse_y <=102)))
{
SelectObject(hMem, hBmp5);
BitBlt(hdc, 185, 80, 250, 102, hMem, 0, 0, SRCCOPY);
mIs = 2;
SendMessage(hwnd, WM_USER, 0, 0);
return 0;
}
else
{
SelectObject(hMem, hBmp3);
BitBlt(hdc, 185, 80, 250, 102, hMem, 0, 0, SRCCOPY);
mIs = 0;
SendMessage(hwnd, WM_USER, 0, 0);
}
GOOD LUCK!~
有没有MFC下实现的?
直接用bitblt就可以了
你先建一个CBitmap bitmap;
bitmap.LoadImage(IDD_SOURCE);
CLientDC dc(this)
CDC memdc;
memdc.CreateComptialDC(dc);
memdc.SelectObject(&bitmap);
dc.Bitblt(x,y,100,100,&memdc......);
你试一下吧
谢谢!
CDC dc;
dc=GetDC();
这样你就得到了对话框的设备环境DC;