none
DuplicateHandle复制HWND RRS feed

  • 问题

  • 为了能使全局函数向一个自定义的对话框发送消息,需要该对话框句柄,于是我定义了一个全局变量:
    HWND h_regDlg=NULL;
    在该对话框类的OnInitDialog函数中加入:
    ::DuplicateHandle(::GetCurrentProcess(), m_hWnd, ::GetCurrentProcess(), 
                                                  (LPHANDLE)&h_regDlg, 0, false, DUPLICATE_SAME_ACCESS);
    复制没有成功
    逐步调试中发现,该句执行后regDlg值为undefined value。
    直接用regDlg=m_hWnd便一切OK。
    但我担心引用计数问题,这样做会不会对话框销毁后句柄还保留着。

    最关键的问题是DuplicateHandle为何 不起作用,难道HWND不是HANDLE的一种吗?
    2009年2月4日 21:21

答案

全部回复