XTToolkitPro使用总结:
1.将MFC控件改成自适应调整大小
将界面类的继承改为CXTPResizeDialog
class CDlgTemplate : public CXTPResizeDialog
在OnInitDialog()中添加
SetResize(IDOK,XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);
SetResize(IDCANCEL,XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);
SetResize(IDC_STATIC_RESET, XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);
SetResize(IDC_STATIC_CLOSE, XTP_ANCHOR_BOTTOMLEFT, XTP_ANCHOR_BOTTOMLEFT);
SetResize(IDC_STATIC_EXPAND,XTP_ANCHOR_BOTTOMLEFT, XTP_ANCHOR_BOTTOMLEFT);
SetResize(IDC_EXPAND_TWO,XTP_ANCHOR_BOTTOMLEFT, XTP_ANCHOR_BOTTOMLEFT);
SetResize(IDC_STATIC_BUTTOM,XTP_ANCHOR_BOTTOMLEFT, XTP_ANCHOR_BOTTOMRIGHT);
其中
#define XTP_ANCHOR_BOTTOMCENTER CXTPResizePoint(.5, 1)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_BOTTOMLEFT CXTPResizePoint(0, 1)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_BOTTOMRIGHT CXTPResizePoint(1, 1)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_MIDDLECENTER CXTPResizePoint(.5, .5)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_MIDDLELEFT CXTPResizePoint(0, .5)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_MIDDLERIGHT CXTPResizePoint(1, .5)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_TOPLEFT CXTPResizePoint(0, 0)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_TOPRIGHT CXTPResizePoint(1, 0)
//<COMBINE XTP_ANCHOR_BOTTOMCENTER>
#define XTP_ANCHOR_TOPCENTER CXTPResizePoint(.5, 0)
第一个参数代表横坐标,第二个参数代表纵坐标
从0-0表示不随界面变化而变化
从0-1表示一端固定,另一端随界面变化(本身会变化)
从1-1表示动态随界面变化(本身不变化)
从1-0会提示错误
.5到1表示变化的速度是0-1的一半
2.TIP文字气泡提醒
CXTPTipWindow m_tipWindow;//声明
//在OnInitDialog()
m_tipWindow.Create(this);//创建气泡
m_tipWindow.ShowWindow(SW_HIDE);//起始状态为隐藏
//在PreTranslateMessage()
if(pMsg->message == WM_MOUSEMOVE && pMsg->wParam == 0){
CPoint point;
point.x = LOWORD(pMsg->lParam);
point.y = HIWORD(pMsg->lParam);
MouseOverCtrl(point, pMsg->hwnd);
}//表示如果鼠标发生移动调用MouseOverCtrl函数
void CDlgTemplate::MouseOverCtrl(CPoint point, HWND hWnd)
{
CWnd* pWnd = FromHandle(hWnd);
if(!pWnd)
return;
int id = pWnd->GetDlgCtrlID();
if(id == IDC_STATIC_REC_1||id == IDC_STATIC_REC_2||id == IDC_STATIC_REC_3)//鼠标移动到相应控件
{
UpdateData();
CRect rect;
pWnd->GetClientRect(&rect);
//Calculate the client coordinates of the dialog window
pWnd->ClientToScreen(&rect);
pWnd->ClientToScreen(&point);
ScreenToClient(&rect);
ScreenToClient(&point);
if(id == IDC_STATIC_REC_1)
m_tipWindow.SetTipText(_T(""), _T("含篇名, 作者, 页码信息的目录内容"));//提示信息
else if(id == IDC_STATIC_REC_2)
m_tipWindow.SetTipText(_T(""), _T("标引的目录区域"));
else if(id == IDC_STATIC_REC_3)
m_tipWindow.SetTipText(_T(""), _T("输入的页码数字"));
m_tipWindow.ShowTipWindow(rect, point, 0, 0, 0, FALSE, TRUE);
}
}
效果如下图
3.超链接形式的按钮
首先创建一个static控件,名为IDC_STATIC_CLOSE
CXTPHyperLink m_hyperLink_close;//声明一个超链接变量
//在OnInitDialog()
m_hyperLink_close.EnableShellExecute(FALSE);
m_hyperLink_close.SetColors(CR_BLACK,CR_BLACK,CR_RED);
//在DoDataExchange()
DDX_Control(pDX, IDC_STATIC_CLOSE, m_hyperLink_close);
//这样就能将static类型转化成超链接类型,下面给超链接按钮添加功能
afx_msg void OnHypText_close();//声明功能函数
ON_BN_CLICKED(IDC_STATIC_CLOSE, &类名::OnHypText_close)//关联
void 类名::OnHypText_close()
{
//此功能实现
}