greenwww
路人甲
路人甲
  • 注册日期2003-09-21
  • 发帖数19
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1714回复:3

怎样用VC做自定义符号库?符号主要用图标或者位图。请高手帮忙!先谢过了

楼主#
更多 发布于:2006-03-23 22:03
<P>1怎样用VC做自定义符号库?符号主要用图标或者位图。请高手帮忙!先谢过了</P>
喜欢0 评分0
hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-04-11 11:36
关注
QQ:22621544 欢迎交流~^^~
举报 回复(0) 喜欢(0)     评分
chenw_1979
路人甲
路人甲
  • 注册日期2006-04-03
  • 发帖数13
  • QQ
  • 铜币151枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-04-19 17:03
<P>这段是例子里的,只能Draw函数里自己画,不能直接载入位图么?</P>
[此贴子已经被作者于2006-4-19 17:04:37编辑过]
QQ:22621544 欢迎交流~^^~
举报 回复(0) 喜欢(0)     评分
游客

返回顶部