用ATL创建了一个基于Button的控件,想使用BS_OWNERDRAW进行自绘,但在MFC程序中使用CreateControl创建ActiveX控件时无法设置style.请高手帮忙.
m_btnWnd.CreateControl(CLSID_ABCDE, NULL, WS_VISIBLE|BS_OWNERDRAW, rcWnd, this, 1111);
ATL中的OnCreate函数.
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
RECT rc;
GetWindowRect(&rc);
rc.right -= rc.left;
rc.bottom -= rc.top;
rc.top = rc.left = 0;
LPCREATESTRUCT cs = reinterpret_cast<LPCREATESTRUCT>(lParam);
if (cs->style & BS_OWNERDRAW)//这里style的值与CreateControl时传入的style不同
m_ctlButton.Create(m_hWnd, rc, 0, BS_OWNERDRAW);
else
m_ctlButton.Create(m_hWnd, rc, 0); return 0;
}
m_btnWnd.CreateControl(CLSID_ABCDE, NULL, WS_VISIBLE|BS_OWNERDRAW, rcWnd, this, 1111);
ATL中的OnCreate函数.
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
RECT rc;
GetWindowRect(&rc);
rc.right -= rc.left;
rc.bottom -= rc.top;
rc.top = rc.left = 0;
LPCREATESTRUCT cs = reinterpret_cast<LPCREATESTRUCT>(lParam);
if (cs->style & BS_OWNERDRAW)//这里style的值与CreateControl时传入的style不同
m_ctlButton.Create(m_hWnd, rc, 0, BS_OWNERDRAW);
else
m_ctlButton.Create(m_hWnd, rc, 0); return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货