??xml version="1.0" encoding="utf-8" standalone="yes"?>一本色道久久,性欧美办公室18xxxxhd,欧美国产欧美亚洲国产日韩mv天天看完整 http://www.shnenglu.com/yxm/category/2806.htmlzh-cnMon, 26 May 2008 09:56:34 GMTMon, 26 May 2008 09:56:34 GMT60完整的WTL文档http://www.shnenglu.com/yxm/archive/2006/11/22/15539.htmlyxmyxmWed, 22 Nov 2006 07:18:00 GMThttp://www.shnenglu.com/yxm/archive/2006/11/22/15539.htmlhttp://www.shnenglu.com/yxm/comments/15539.htmlhttp://www.shnenglu.com/yxm/archive/2006/11/22/15539.html#Feedback8http://www.shnenglu.com/yxm/comments/commentRss/15539.htmlhttp://www.shnenglu.com/yxm/services/trackbacks/15539.html下蝲地址Q?a href="/Files/yxm/wtldoc.rar">http://www.shnenglu.com/Files/yxm/wtldoc.rar



yxm 2006-11-22 15:18 发表评论
]]>
LNK1123: 转换?COFF 期间p|: 文g无效或损?&& CVT1100: 重复的资?解决Ҏ(gu)http://www.shnenglu.com/yxm/archive/2006/10/26/14243.htmlyxmyxmThu, 26 Oct 2006 09:11:00 GMThttp://www.shnenglu.com/yxm/archive/2006/10/26/14243.htmlhttp://www.shnenglu.com/yxm/comments/14243.htmlhttp://www.shnenglu.com/yxm/archive/2006/10/26/14243.html#Feedback2http://www.shnenglu.com/yxm/comments/commentRss/14243.htmlhttp://www.shnenglu.com/yxm/services/trackbacks/14243.html详细内容L微Y官方说明Q?a >http://support.microsoft.com/kb/320216/zh-cn

q里贴上我的解决Ҏ(gu)(vs2005环境)Q?br />
讄工程属?>配置属?> 清单工具->输入和输?>嵌入清单Q选择[否]Q确定后重新生成卛_?br />



yxm 2006-10-26 17:11 发表评论
]]>
~写、发布安全的ActiveX控ghttp://www.shnenglu.com/yxm/archive/2006/10/23/14045.htmlyxmyxmMon, 23 Oct 2006 09:28:00 GMThttp://www.shnenglu.com/yxm/archive/2006/10/23/14045.htmlhttp://www.shnenglu.com/yxm/comments/14045.htmlhttp://www.shnenglu.com/yxm/archive/2006/10/23/14045.html#Feedback0http://www.shnenglu.com/yxm/comments/commentRss/14045.htmlhttp://www.shnenglu.com/yxm/services/trackbacks/14045.html 一、指出ActiveX控g对于脚本与数据初始化是安全的

1.  下行添加到lg的承列表的末尾Q?/p>
public  IObjectSafetyImpl < CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER  |  INTERFACESAFE_FOR_UNTRUSTED_DATA >

2.  下行添加到COM 映射Q?

COM_INTERFACE_ENTRY(IObjectSafety)

二、电(sh)子签?br />可?MAKECERT ?CERT2SPC 实用工具生成试 Software Publisher Certificate。请注意Q此试 SPC 对Y件发布无效,但可用于试代码{֐?br />
1.  创徏证书文gQ?br />
makecert  /sv  "U钥文g.pvk"  /"CN=公司的名?/span>"  "证书文g?cer" //注意保留扩展?/span>

2.  转换cer格式为spc格式Q?br />

cert2spc   dream.cer   dream.spc   

3.  lcab文g{֐

signtool signwizard

4.  在web上嵌套入签名的CAB文g

<BODY>
<OBJECT ID="PolyCtl" 
CLASSID
="CLSID:4CBBC676-507F-11D0-B98B-000000000000"
CODEBASE
="http://example.sq-soft.com/mydir/myctl.cab#version=1,0,0,1">
</OBJECT>

</BODY>

CODEBASE 也可以直接指?OCX ?DLL 文gQ?/p>


三、创建CAB文g(摘录自MSDNQ?/strong>

1.  创徏INF文g

; Sample INF file for POLYGON.DLL
[version] 
; version signature (same 
for both NT and Win95) do not remove
signature
="$CHICAGO$"
AdvancedINF
=2.0  

[Add.Code]
polygon.dll
=polygon.dll
atl.dll
=atl.dll

; needed DLL
[atl.dll]
file
-win32-x86=thiscab
FileVersion
=2,00,0,7024
DestDir
=11
RegisterServer
=yes 

[polygon.dll]
file
-win32-x86=thiscab
clsid
={4CBBC676-507F-11D0-B98B-000000000000} 
FileVersion
=1,0,0,1 
RegisterServer
=yes  
; end of INF file

其中“thiscab”是一个关键字Q表C?CAB 包含?DLLQ也可通过指定一条绝Ҏ(gu)相对路径Q从一?HTTP 位置下蝲所需?DLLQ例如:

file-win32-x86=http://example.microsoft.com/mydir/NEEDED.DLL 

关键字“file-win32-x86”将q_标识?x86 特定的?/p>

可通过?Windows 资源理器中的文件上单击鼠标右键来获取文件的版本受从昄的列表中选择“属性”,然后在显C的对话框中选择“版本”选项卡。有旉要在文g版本中额外插入一?0。例如,在对话框?ATL.DLL 的版本号昄?2.00.7024。而在 INF 文g中,q变?2, 00, 0, 7024?/p>

“DestDir”是要加蝲文g的目录所在的位置Q?1 指定pȝ目录?WINDOWS/SYSTEM ?WINNT/SYSTEM32Q?0 指定 Windows 目录、WINDOWS ?WINNT。如果未指定M DestDirQ典型情况)Q则代码安装在固定的 OCCACHE 目录中?/p>

“clsid”是要安装的控件的 CLSID?br />
2.  创徏CAB文g

创徏?INF 文g后,q行 CABARC 实用工具以创?CAB 文g。应在包含源文g的目录下q行 CABARC。在命o行上Q按源文件出现在 INF 中的序排列它们Qƈ?INF 文g攑֜最后。例如:

CABARC -6144  n  MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

应在包含源文ӞINF、OCX ?DLL 文gQ的目录下运?CABARC。将?CAB 文g中存的文g应该按它们在 INF 文g中列出的同一序在命令行中列出。在上面的示例中QINF 文g应该?NEEDED1.DLL 列在W一位,接下来是 NEEDED2.DLLQ然后是 MYCTL.OCX?/p>

-s 选项在压~文件中保留用于代码{֐的空间?b>n 命o指定希望创徏 CAB 文g?br /> 



yxm 2006-10-23 17:28 发表评论
]]>
无效的参数错?E_INVALIDARG)http://www.shnenglu.com/yxm/archive/2006/10/20/13894.htmlyxmyxmFri, 20 Oct 2006 03:52:00 GMThttp://www.shnenglu.com/yxm/archive/2006/10/20/13894.htmlhttp://www.shnenglu.com/yxm/comments/13894.htmlhttp://www.shnenglu.com/yxm/archive/2006/10/20/13894.html#Feedback0http://www.shnenglu.com/yxm/comments/commentRss/13894.htmlhttp://www.shnenglu.com/yxm/services/trackbacks/13894.html今天在实C个COM的事件接收器的时Q客Ll过ATL事g映射后,q行时返回:E_INVALIDARGQ调试跟t也没有发现参数不对。折腾了好久后,发现客户端的事g函数的调用约定应为__stdcallQ应该与所有的COM接口函数一样用__stdcall调用U定。犯了一个愚蠢的错误?/p>

yxm 2006-10-20 11:52 发表评论
]]>
COMlgcd未注册的问题http://www.shnenglu.com/yxm/archive/2006/10/17/13781.htmlyxmyxmTue, 17 Oct 2006 09:37:00 GMThttp://www.shnenglu.com/yxm/archive/2006/10/17/13781.htmlhttp://www.shnenglu.com/yxm/comments/13781.htmlhttp://www.shnenglu.com/yxm/archive/2006/10/17/13781.html#Feedback0http://www.shnenglu.com/yxm/comments/commentRss/13781.htmlhttp://www.shnenglu.com/yxm/services/trackbacks/13781.html今天在聚合一个COMlg的时候,一开始用智能指针创建时报错Q“组件没有注册类别”,但检查注册确实已l注册了Q而在使用原始指针时报错:“类别不支持聚合”。后来经q仔l调试发现是׃在聚合组件FinalConstruct中的CoCreateInstance参数有错。在使用指针时报的错误真是让Z知道是怎么回事?/p>

yxm 2006-10-17 17:37 发表评论
]]>
"xxx.h 由MIDL生成但无法? 的问?/title><link>http://www.shnenglu.com/yxm/archive/2006/10/17/13777.html</link><dc:creator>yxm</dc:creator><author>yxm</author><pubDate>Tue, 17 Oct 2006 07:25:00 GMT</pubDate><guid>http://www.shnenglu.com/yxm/archive/2006/10/17/13777.html</guid><wfw:comment>http://www.shnenglu.com/yxm/comments/13777.html</wfw:comment><comments>http://www.shnenglu.com/yxm/archive/2006/10/17/13777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/yxm/comments/commentRss/13777.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yxm/services/trackbacks/13777.html</trackback:ping><description><![CDATA[ <p>在新增ATL单对象的时候,新对象的名称不能与工E同名,否则会有此问题?/p> <img src ="http://www.shnenglu.com/yxm/aggbug/13777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yxm/" target="_blank">yxm</a> 2006-10-17 15:25 <a href="http://www.shnenglu.com/yxm/archive/2006/10/17/13777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>COM——事件接收器实现Ҏ(gu)ȝhttp://www.shnenglu.com/yxm/archive/2006/10/13/13633.htmlyxmyxmFri, 13 Oct 2006 03:44:00 GMThttp://www.shnenglu.com/yxm/archive/2006/10/13/13633.htmlhttp://www.shnenglu.com/yxm/comments/13633.htmlhttp://www.shnenglu.com/yxm/archive/2006/10/13/13633.html#Feedback0http://www.shnenglu.com/yxm/comments/commentRss/13633.htmlhttp://www.shnenglu.com/yxm/services/trackbacks/13633.htmlҎ(gu)一Q用MFC映射宏,从CCmdTartgetz子类EventSink

1.  .h文g中申明接口、分zID映射

DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()

2.   .cpp文g实现接口、分zID映射

// 映射分派ID
BEGIN_DISPATCH_MAP(cThisClass, CBaseClass)
     DISP_FUNCTION_ID(CThisClass, 
            " ComFunc " ,
             DISP_ID, 
              LocalFuncName, 
              VARIANT_RETURN_TYPE, 
              VARIANT_PARAMS_TYPE)
END_DISPATCH_MAP()
      
// 映射事g接口
BEGIN_INTERFACE_MAP(CThisClass,CBaseClass)    
     INTERFACE_PART(CThisClass, DIID_IEventXX, Dispatch) 
// q里Dispatch为CCmdTartcȝ一个结?该宏填充q个l构
END_INTERFACE_MAP()

3.  #import "...\lg?tlb" no_namespace named_guids no_namespace

4. 初始化COM库、Dispatchl构q徏立连?/p>

      CoInitialize(NULL);
EnableAutomation();    //同上面的宏一起实CIDispatch接口
    AfxConnectionAdvise(ComObject,  DIID__IEventXX,  GetIDispatch(FALSE),  FALSE, &m_dwCookie);

5.  实现映射函数(LocalFuncName)

6.  卸蝲COM库、取消连?/p>

AfxConnectionUnadvise()   
      CoUnInitialize();


Ҏ(gu)?  使用ATL映射宏,l承IDsipEventImpl

1.   #import "...\lg?tlb" no_namespace named_guids

2.  实现事g接收cCEventSink

      a.  使用ATL宏定义函C息结构     ?/p>

_ATL_FUNCTION_INFO FuncInfo  =
{
     CC_STDCALL,  
// 调用方式
     VT_EMPTY,        // q回cd
      1 ,                           // 参数个数
    {VT_I4}                 // 参数cd?br /> }
;

      b.   ATL宏映事件函敊W         ?/p>

BEGIN_SINK_MAP(CEventSink)
       SINK_ENTRY_INFO(
1 , DIID_I, DISP_ID, LocalFunc,  & FuncINfo)
       
END_SINK_MAP()

 3.  实例化组件对象和QventSink对象Q用EventSink对象或AtlAdvise函数建立q接: EventSink->Advise(...) 或EventSink->DispEventAdvise(...)  或 AtlAdvise(...)

 4.  取消q接Q销毁对?br />
     #ifndef __EVENTSINK_H
     
#define __EVENTSINK_H
     
     
namespace 
     
{
     
static const int DISPID_SHOW = 1;
     
static const int DISPID_SHOW2 = 2;
     
     _ATL_FUNC_INFO OnShowInfo 
=
     
{
      CC_STDCALL, 
//calling conv
      VT_EMPTY,//return value
      0 ,//number of arguments
      NULL//argumnent types
     }
;
     _ATL_FUNC_INFO OnShow2Info 
=
     
{
      CC_STDCALL, 
//calling conv
      VT_EMPTY,//return value
      1 ,//number of arguments
      { VT_I2}//argumnent types
     }
;
     
     }

     
     
class CEventSink :  public IDispEventImpl<1, CEventSink, &DIID__IAtlTest2Events, &LIBID_TEST2Lib>
     
{
     
public
       CEventSink()
{};
       
virtual ~CEventSink(){};
     
       
void __stdcall OnShow(); //没有参数的情?/span>
       void __stdcall OnShow2(short);//有参数的情况
     
       
//必须要用SINK_ENTRY_INFO,必须指定参数信息
       BEGIN_SINK_MAP(CEventSink)
        SINK_ENTRY_INFO(
1,DIID_ISimpleCOMEvents,DISPID_SHOW,OnShow,&OnShowInfo)
        SINK_ENTRY_INFO(
1,DIID_ISimpleCOMEvents,DISPID_SHOW2,OnShow2,&OnShow2Info)
       END_SINK_MAP()
     }
;
     
     
#endif

Ҏ(gu)三:自定义EventSinkQ从IDispatchzQ实现所有的虚方?在Invoke函数中根据DISP_ID处理回调 (代码?



yxm 2006-10-13 11:44 发表评论
]]>
ɫԭһþۺ| þseƷһ| þ99Ʒ鶹լլ| þ99þ99СݾƷӿ| þþþ| 2020þþƷ| þԭƷ| þþþƷ鶹| һþۺ³³| 99þþþƷѹۿ| ŷƷۺϾþ| þþþAVվ | ˾þۺ| Ʒþþþþ³| AƷһþ| ɫۺϾþĻ| ޾ƷþþþĻ| þùƷþùƷ| AVһþ| ھƷþù| þ˿ྫƷĻ| þþƷƷ| 99þþƷëƬ| 69Ʒþþþ777| ˳AVɫۺϾþ| պƷþþվ| þ99žŹѿС˵| þ̳| ĻƷѾþ| þòӰ| þþƷ| þˬˬƬAV鶹| þˬˬˬav| ޹պŷþ| 㽶99þùۺϾƷլ | AAAþþþƷ| ɫۺϾþĻ| 97Ʒ97þþþþ| Ůþþ| ƷŮþþ| þseƷһ|