本帖最后由 xychzh 于 2011-07-07 09:09:55 编辑

解决方案 »

  1.   

    CWnd派生类GetSafeHwnd(),m_hWnd成员
      

  2.   


    我问的是win32程序,获取自己的窗口的HWND
      

  3.   


    你用VS建一个win32应用程序,然后你看怎么获取本窗口的HWND?
      

  4.   

    是不是要获得控制台的窗口呢,前阵子自己做dsound时,用的是这个apiHWND hwnd = GetForegroundWindow();
      

  5.   

    晕了...
    InitInstance时创建窗口,此后才有hwnd。但不用保存!
    此后有消息来,都进入消息处理函数wndproc。第一个参数就是窗口的hwnd。
    wndproc是窗口类的属性,也就是说这个类的多个对象(窗口)共享wndproc,第一个参数就用来区别是哪个对象。
      

  6.   

    你创建Win32程序,CreateWindow(Ex)返回的不就是HWND窗口句柄
      

  7.   

    感觉是控制台的,不然窗体类型的,hwnd还是很好获得的
      

  8.   


    win32应用程序 ≠ win32控制台应用程序
      

  9.   

    从CWnd类派生出来的都会有一个成员函数保存当前窗口的句柄
    莫非是m_hWnd
      

  10.   

    HWND hwnd = CreateWindow(blalalalalal); 
    这里的hwnd不就是窗口的句柄了吗?HWND hwnd = FindWindow(balalalalala);
    ...~~~应该是吧http://blog.csdn.net/daiguopeng/article/details/494860
      

  11.   


    对,我要的就是hwnd,我就是要问有没有什么API函数也可以获取这个HWND,
    除了FindWindow()有没有别的? 像GetModuleHandle()一样???
      

  12.   

    要的到本窗口的句柄还用什么函数,直接m_hWnd不就行了
      

  13.   

    晕...为什么一直不说上下文呢...如果窗口多多,到处都想用主窗口的hwnd,你在initinstance的时候存起来也行啊!
      

  14.   


    我问的有没有这种API函数,不是来问怎么获得HWND
      

  15.   

    win32的窗口都是你自己创建的啊
    如果你想用句柄你创建的时候应该把句柄保存下来
      

  16.   

    你们再仔细看看我的标题和我所问的问题,
    不是问怎么获取HWND,还是问,哪个API函数可以获取HWND。
      

  17.   


    看22楼
    若照你所说,那么GetModuleHandle()函数就没有存在的意义了。
      

  18.   

    HMODULE对app是全局唯一的,这个可以有。
    HWND对app来说,可能没有,可能有N个...你说的是什么?主窗口?
      

  19.   


    那我明白了,这窗口是创建的时候才生成的,win32API函数提供不了,是吧?
    行了,知道了。要么用FindWindow,要么就赋值了。 
      

  20.   

    CreateWindow的时候放在一个全局变量里,以后再拿出来用
      

  21.   


    GetModuleHandle()没有调用,是因为WinMain函数中就把这个值作为参数传过来了
    如果你用汇编,这个API是必须使用的