解决方案 »

  1.   

    或者告诉我怎么获得OCX 默认的窗口句柄,我现在要做的是拿到一个句柄,将视频流显示出来
      

  2.   

    你要明白,Dialog和Button都是Window
    所以如果有Dialog的WindowHandle,查找其所有子Window的WindowHandle可以
    使用API FindWindow和FindWindowEx
    参考下面:
    HWND MyFindListViewWindow()
    {
        const int MyMaxParentWinCount = 4;
        // 父窗口类名数组
        char *A_szClassName[MyMaxParentWinCount] = {
            "ThunderRT6FormDC",
            "ThunderRT6Frame",
            "ThunderRT6Frame",
            "ListView20WndClass"
        };
        // 父窗口标题数组
        char *A_szWinName[MyMaxParentWinCount] = {
            Title,
            "",
            "",
            ""
        };
        // 首先求得顶级父窗口
        HWND hMainWin = FindWindow(A_szClassName[0], A_szWinName[0]);
        if (NULL==hMainWin) {
            return NULL;
        }
        // 逐次用FindWindowEx函数求出各级子窗口
        HWND hNextChildWin=NULL;    HWND hLastWin=NULL;
        for (int i=1; i<MyMaxParentWinCount; i++) {
            if (1==i) {
                hMainWin = FindWindowEx(hMainWin,NULL         ,A_szClassName[i],A_szWinName[i]);
            } else if (2==i) {
                hNextChildWin = FindWindowEx(hMainWin,hNextChildWin,A_szClassName[i],A_szWinName[i]);
                if (NULL==hNextChildWin) break;//
                hNextChildWin = FindWindowEx(hMainWin,hNextChildWin,A_szClassName[i],A_szWinName[i]);
                hLastWin=hNextChildWin;
            } else {
                hLastWin = FindWindowEx(hLastWin,NULL         ,A_szClassName[i],A_szWinName[i]);
            }
        }
        return hLastWin;
    }
      

  3.   

    不推荐LS的方法,active控件也可能是wndless的。不过控件总是由你的容器创建的,按理说有窗口的你直接就能获得activex控件的句柄,除非你是在activex内部在new了一个dlg出来,那如果这样的话你得抛出接口来供宿主程序操作了。
      

  4.   

    控件增加一个属性或接口用来传递句柄,由Dlg传递到控件
      

  5.   

    dialog只有被创建才会有句柄,所以创建时把它的指针记录下来,要取button时用,dialog->getdlgitem
      

  6.   

    请问怎么抛出接口让主程序调用,我建的是MFC active,后来参照这篇文章http://blog.sina.com.cn/s/blog_7065a9de0100vmb1.html,然后想得到dialog中控件的句柄
      

  7.   

    结贴,实现方法在dialog里 然后给activex接口