sinawear

导航

ActiveX Container Test的使用 和 宏 父类 子类 对象 内存布局.

 

ActiveX Container Test. MicroSoft Web ActiveX使用问题.

image

 

要选择,才能使容器中的控件激活(不然Invoke Methoes 会):

image

 

调用ActiveX给出的方法:

image

 

 

//////////////////////////////////////////////////////////////////////////////////////////

 

#define offsetof(s,m)   (size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m))

#define METHOD_PROLOGUE(theClass, localClass) \
    theClass* pThis = \
        ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
    AFX_MANAGE_STATE(pThis->m_pModuleState) \
    pThis; // avoid warning from compiler \

 

 

#define BEGIN_INTERFACE_PART(localClass, baseClass) \
    class X##localClass : public baseClass \
    { \
    public: \
    STDMETHOD_(ULONG, AddRef)(); \
    STDMETHOD_(ULONG, Release)(); \
    STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObj); \
#define END_INTERFACE_PART(localClass) } m_x##localClass; friend class X##localClass;

#define DECLARE_INTERFACE_MAP() \
private: \
static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
protected: \
static const AFX_INTERFACEMAP interfaceMap; \
virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \



//JS启动计算器    
function runcalc()    
{    
    var calc=new ActiveXObject("WScript.shell");    
    calc.Run("calc");    
}


NTDLL.DLL
调用过程:LoadLibraryA->LoadLibraryW->LdrLoadDll
LdrGetProcedureAddress


在Windows的内部,GetMessage和PeekMessage执行着相同的代码。而两者最大的不同之处则体现在没有任何消息返回到应用程序的情况下。在此种情况下,PeekMessage会返回一个空值到应用程序,GetMessage会在此时让应用程序休眠。


政府强制,一二线科技人员去大学任教.
找个女人来收拾我.

终有一天,你会离开的.那么现在,你还嫌弃这,嫌弃那吗?

他制造小气候.


为什么要放到表里
CWnd* PASCAL CWnd::FromHandle(HWND hWnd)
{
    CHandleMap* pMap = afxMapHWND(TRUE); //create map if not exist
    ASSERT(pMap != NULL);
    CWnd* pWnd = (CWnd*)pMap->FromHandle(hWnd);

#ifndef _AFX_NO_OCC_SUPPORT
    pWnd->AttachControlSite(pMap);
#endif

    ASSERT(pWnd == NULL || pWnd->m_hWnd == hWnd);
    return pWnd;
}

右键菜单,响应消息,以下效果是一样的.
ON_COMMAND
ON_BN_CLICKED



http://blog.chinaunix.net/uid-20437338-id-1946481.html
AfxGetResourceHandle()
还可以使用FindResource()搜索资源表,寻找给定的资源

   hinstSHDOCLC = LoadLibrary(TEXT("SHDOCLC.DLL"));

    if (hinstSHDOCLC == NULL)

    {

        // 载入模块错误 -- 尽可能安全地失败

        return;

    }

    hMenu=LoadMenu(hinstSHDOCLC,

        MAKEINTRESOURCE(IDR_BROWSE_CONTEXT_MENU));

hMenu=GetSubMenu(hMenu,dwID);

 


 

GetMessagePos()
GetCursorPos()


NMHDR
typedef struct tagNMHDR
{
    HWND      hwndFrom;
    UINT_PTR  idFrom;
    UINT      code;         // NM_ code
}   NMHDR;
typedef NMHDR FAR * LPNMHDR;

NMLISTVIEW
typedef struct tagNMLISTVIEW
{
    NMHDR   hdr;
    int     iItem;
    int     iSubItem;
    UINT    uNewState;
    UINT    uOldState;
    UINT    uChanged;
    POINT   ptAction;
    LPARAM  lParam;
} NMLISTVIEW, *LPNMLISTVIEW

posted on 2013-02-28 19:51  sinawear  阅读(301)  评论(0编辑  收藏  举报