大家好,新学MFC的窗口,碰到不少初级问题.我想在一个线程里用Application::Run显示窗口,另一个线程在后台处理业务,并且会根据运算结果作用于窗口.也就是说,我需要在业务线程里取得对窗口的控制.VS2008的窗口导向做出来的窗口是public ref class MyWindow : public System::Windows::Forms::Form我在窗口线程用:
MyWindow ^ thewin= gcnew MyWindow();
Application::Run( thewin );
可以成功显示窗口.但是不知道怎样取得这个窗口的控制.听说是通过句柄来实现,查了一下.
MyWindow ^ thewin= gcnew MyWindow();
HWND hwg;
int error = 111; //随便给个值
hwg = ::FindWindow(Null,"LoginServerWindow" ); //LoginServerWindow是MyWindow的Name
error = ::GetLastError();通过断点,发现hwg的值是"未定义的值",但error为0.不知道出了什么问题,盼望有心人解答.还想问问,在窗口线程得到了hwg并传给工作线程以后,在工作线程如何利用hwg来控制窗口?
MyWindow ^ thewin= gcnew MyWindow();
Application::Run( thewin );
可以成功显示窗口.但是不知道怎样取得这个窗口的控制.听说是通过句柄来实现,查了一下.
MyWindow ^ thewin= gcnew MyWindow();
HWND hwg;
int error = 111; //随便给个值
hwg = ::FindWindow(Null,"LoginServerWindow" ); //LoginServerWindow是MyWindow的Name
error = ::GetLastError();通过断点,发现hwg的值是"未定义的值",但error为0.不知道出了什么问题,盼望有心人解答.还想问问,在窗口线程得到了hwg并传给工作线程以后,在工作线程如何利用hwg来控制窗口?
FindWindow作为WINAPI函数,只有当Application::Run运行了之后才有效.
而鉴于窗口线程的Application::Run运行之后已被消息循环主塞,故FindWindow应在工作线程中调用.