MFC程序中由主窗口创建子窗口时,子窗口线程的优先级为normal,由于主窗口子窗口都有消息队列在循环处理,二者优先级一样会影响主线程执行情况,如何改变子窗口线程优先级原来思路是通过子窗口指针来获取线程指针,但是GetWindowThreadProcessId()函数返回的是创建子窗口的线程ID和进程ID请各位大虾帮忙~

解决方案 »

  1.   

    不是进程 是同一进程里线程的优先级
    MFC创建的窗口线程无法指定优先级,我想通过SetThreadPrioriyty()来设置,但暂时找不到hThread
      

  2.   

    没明白LZ说的意思??
    在一个应用程序中,一般只有一个消息循环(除非你自己在死循环中又写了一个,但是也只有一个消息循环气作用),这个程序中的所有窗口的消息都是又这个消息循环来转发的,而这个消息循环就在主线程中。LZ是不是把窗口和线程弄混淆了啊,感觉很混乱……
      

  3.   

    每个线程都可以有自己的消息循环队列,GDI线程的能自己创建自己的消息队列,对于非GDI的线程至少调用message相关的function一次,比如GetMessage,PeekMessage,就能创建自己的消息队列,这个同组的组员貌似做过测试
      

  4.   

    lz能贴点代码出来吗?不是很明白你的问题。
    eg:
    主线程。
    子窗口。
    之类的。
      

  5.   

    根据主窗口的HWND窗口句柄,找到应用程序的HANDLE句柄?
      

  6.   

    主窗口的线程句柄在主线程任一函数中调用::GetCurrentThread()可以得到
    现在想获取的是主线程中创建出的子窗口的线程句柄
    BOOL MainDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); Handle hmainthread=::GetCurrentThread(); Dlg=new Dlg(this);
    Dlg->Create(IDD_DIALOG_DLG,NULL);
    Dlg->ShowWindow(TRUE);         ......
    }Dlg的窗口句柄应为Dlg->m_hwnd
    如何获取Dlg的线程句柄
      

  7.   

    Dlg窗口的线程句柄不就是主线程句柄吗?你又没有开新的线程
      

  8.   

    问题找到了,是我理解有问题,认为每个GDI都自动会有新线程形成,楼上正解
    结贴了散分 谢谢回帖的各位