varding

导航

 

1、今天用ATL处理skyline的事件照着skyline官方的列子敲代码竟然出错了,具体为DispEventAdvise后m_pITerraExplorer5就变成0xcccc了,跟好好几次都是这样。最好才发现是处理事件的函数调用方式忘了加了...要加__stdcall 才行

 

2、dispid 

SINK_ENTRY_EX(/*nID =*/ 0, DIID__ITerraExplorerEvents5 ,/*dispid =*/ 1, OnGisLoadFinish)

 

dispid 这个是具体某个事件在列表中的顺序:

 

代码
HRESULT _ITerraExplorerEvents5::OnLoadFinished
HRESULT _ITerraExplorerEvents5::OnFileClosing
HRESULT _ITerraExplorerEvents5::OnFrame
HRESULT _ITerraExplorerEvents5::OnTerraExplorerMessage
HRESULT _ITerraExplorerEvents5::OnObjectAction
HRESULT _ITerraExplorerEvents5::OnFileSave
HRESULT _ITerraExplorerEvents5::OnRenderQualityChanged
HRESULT _ITerraExplorerEvents5::OnInputModeChanged
HRESULT _ITerraExplorerEvents5::OnLButtonDown

 

 

比如:OnLoadFinished 是第一个id就是1

OnLButtonDown id是9

 

3、import的时候不要按官方推荐的直接引用路径,换个机器很麻烦

 

#import "C:\Program Files (x86)\Skyline\TerraExplorer Pro\TerraExplorerX.dll" no_namespace,named_guids

用下面这个就行了
#import
"libid:b87695b0-65ad-11d5-85c1-0001023952c1" no_namespace,named_guids

 

 

posted on 2010-11-26 22:28  varding  阅读(438)  评论(0)    收藏  举报