0

我正在为一个程序制作一个插件,当面临如何在程序内创建一个与我选择使用 MFC 类的程序窗口相同样式的窗口时,我选择使用 MFC 类:CDC、CRect、CPen 等和然后使用 DrawFrameControl 我能够设计出我想要的简化版本。

现在的问题是:我创建了一个关闭、最小化等按钮。但是我将如何将事件添加到我绘制的内容中?

网上搜了没找到解决办法,所以才问大家

谢谢

这是我到目前为止绘制的代码:

CDC dc;
dc.Attach(hdc);
CButton but;

CBrush green(COLOR_GREEN);
CBrush white(COLOR_WHITE);
CRect rect=GetRadarArea();
CRect rect2=GetChatArea();
CPoint ptdown,ptup;

rect.bottom=rect2.top;
rect.TopLeft().x=rect.BottomRight().x-180;
//AddScreenObject (1,"Cenas",rect,true,"nice") ;

//but.Create("Undo",BS_PUSHBUTTON,rect,hdc,MYBUTTONID);
dc.FillRect(&rect,&green);

CRect rect3; //Closebutton

rect3.TopLeft().x=rect.BottomRight().x-10;
rect3.TopLeft().y=rect.TopLeft().y;
rect3.BottomRight().x=rect.BottomRight().x;
rect3.BottomRight().y=rect.TopLeft().y+10;
dc.DrawFrameControl(&rect3,DFC_CAPTION,DFCS_CAPTIONCLOSE);

CRect rect4; //Minimize button

rect4.top=rect3.top;
rect4.bottom=rect3.bottom;
rect4.TopLeft().x=rect3.TopLeft().x-10;
rect4.BottomRight().x=rect3.BottomRight().x-10;
dc.DrawFrameControl(&rect4,DFC_CAPTION,DFCS_CAPTIONMIN);


CRect rect5;
rect5.top=rect3.top;
rect5.bottom=rect3.bottom;
rect5.TopLeft().x=rect.TopLeft().x;
rect5.BottomRight().x=rect3.BottomRight().x;
dc.SetTextColor(COLOR_WHITE);
dc.DrawText("FL Changes List",rect5,DT_CENTER);

CPen    pen1 ( 0, 0.2, COLOR_WHITE) ;
dc.SelectObject(&pen1);
dc.MoveTo(rect.TopLeft().x,rect5.BottomRight().y);
dc.LineTo(rect.BottomRight().x,rect5.BottomRight().y);
4

1 回答 1

0

为 WM_LBUTTONDOWN 和 WM_LBUTTONUP 添加消息处理程序。当您获得点击时,将点击位置与伪按钮位置进行比较,以确定是否点击了按钮。

于 2013-10-30T03:12:59.800 回答