基于对话筐的应用程序。谢谢帮忙!

解决方案 »

  1.   

    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))
    {
       //写入你的相应代码
    }
      

  2.   

    嘻~ 我刚刚做了一个 :)
    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!~
      

  3.   

    好,我看看。
    有没有MFC下实现的?
      

  4.   

    贴图,不很简单吗
    直接用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......);
    你试一下吧
      

  5.   

    spwnihao(海盗) 这能把位图贴到不规则的区域吗?
      

  6.   

    当然那种贴图方式,自能贴矩形的图形,你要贴到不规则区域,就得想别的办法了,我有一个办法就是,你在你的不规则区域画一个多边形,然后用画刷进行填充,你的画刷选择一个CBitmap,就可以了,当然你得不规则图形肯定能变成一个多边形(边足够多),你试一下吧
      

  7.   

    在对话框上能直接用GDI函数画图马?告诉我怎么做,我就结贴!
    谢谢!
      

  8.   

    可以在对话框上直接绘图的
    CDC dc;
    dc=GetDC();
    这样你就得到了对话框的设备环境DC;