阅读:1892回复:3
怎样用VC做自定义符号库?符号主要用图标或者位图。请高手帮忙!先谢过了
<P>1怎样用VC做自定义符号库?符号主要用图标或者位图。请高手帮忙!先谢过了</P>
|
|
1楼#
发布于:2006-04-11 11:36
关注
|
|
|
2楼#
发布于:2006-04-14 09:47
<P>通过COM组件能做.</P>
<P>class ATL_NO_VTABLE CNdSym : <BR> public CComObjectRootEx<CComSingleThreadModel>,<BR> public CComCoClass<CNdSym, ;CLSID_NdSym>,<BR> public IDispatchImpl<INdSym, ;IID_INdSym, ;LIBID_NDSYMBOLLib>,<BR> public ICustomLine,<BR> public ICustomMarker<BR>{<BR>private:</P> <P>DECLARE_REGISTRY_RESOURCEID(IDR_NDSYM)</P> <P>DECLARE_PROTECT_FINAL_CONSTRUCT()</P> <P>BEGIN_COM_MAP(CNdSym)<BR> COM_INTERFACE_ENTRY(INdSym)<BR> COM_INTERFACE_ENTRY(IDispatch)<BR> COM_INTERFACE_ENTRY(ICustomLine)<BR> COM_INTERFACE_ENTRY(ICustomMarker)<BR>END_COM_MAP()</P> <P> STDMETHOD(SetupDC)(LONG hDC, DOUBLE dpi, IDispatch * pBaseSym)<BR> {<BR> CDC* pcdc=CDC::FromHandle((HDC)hDC);<BR> m_oldBrush=(CBrush*)pcdc->SelectStockObject(HOLLOW_BRUSH);</P> <P> m_pen.CreatePen(PS_SOLID, 2, RGB(255,0,0));<BR> m_oldPen=(CPen*)pcdc->SelectObject(;m_pen);<BR> <BR> m_font.CreateFont(12,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,<BR> CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");<BR> m_oldFont=pcdc->SelectObject(;m_font);</P> <P> pcdc->SetBkMode(TRANSPARENT);</P> <P> return E_NOTIMPL;<BR> }<BR> STDMETHOD(ResetDC)(LONG hDC)<BR> {<BR> CDC* pcdc=CDC::FromHandle((HDC)hDC);<BR> CBrush* ptmpb=pcdc->SelectObject(m_oldBrush);<BR> ptmpb->DeleteObject();<BR> CPen* ptmpp=pcdc->SelectObject(m_oldPen);<BR> ptmpp->DeleteObject();<BR> CFont* ptmpf=pcdc->SelectObject(m_oldFont);<BR> ptmpf->DeleteObject();</P> <P> return E_NOTIMPL;<BR> }<BR> STDMETHOD(Draw)(LONG hDC, LONG * points, LONG * partCounts, LONG numParts)<BR> {<BR> CDC* pcdc;<BR> pcdc=CDC::FromHandle((HDC)hDC);<BR> POINT ptc;<BR><BR> DrawSym(pcdc, ptc.x, ptc.y);</P> <P> return E_NOTIMPL;<BR> }<BR>// ICustomMarker<BR> STDMETHOD(Draw)(LONG hDC, LONG x, LONG y)<BR> {<BR> CDC* pcdc;<BR> pcdc=CDC::FromHandle((HDC)hDC);</P> <P> DrawSym(pcdc, x, y);</P> <P> return E_NOTIMPL;<BR> }</P> <P>}</P> <P>在Draw里画就可以了</P> |
|
3楼#
发布于:2006-04-19 17:03
<P>这段是例子里的,只能Draw函数里自己画,不能直接载入位图么?</P>
[此贴子已经被作者于2006-4-19 17:04:37编辑过]
|
|
|