title: Creating a Window Inside TThread
body: <p>im trying to send a message between 2 separate projects, but my problem is that im trying to make the receiver run inside a TThread Object, but WndProc wont work from inside an Object, must be a function, is there anyway to create a window inside a TThread that can process messages inside the thread?</p>
  
  <p>here is what i mean</p>
  
  <pre><code>function TDataThread.WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  begin
   Result := 0;
   case uMsg of
     WM_DATA_AVA: MessageBox(0, 'Data Avaibale', 'Test', 0);
    else Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
   end;
  end;
  
  Procedure TDataThread.Create(const Title:String);
  begin
   HAppInstance := HInstance;
   with WndClass do
   begin
    Style := 0;
    lpfnWndProc := @WindowProc;          //The Error Lies here (Variable Required)
    cbClsExtra := 0;
    cbWndExtra := 0;
    hInstance := HAppInstance;
    hIcon := 0;
    hCursor := LoadCursor(0, IDC_ARROW);
    hbrBackground := COLOR_WINDOW;
    lpszMenuName := nil;
    lpszClassName := 'TDataForm';
   end;
   Windows.RegisterClass(WndClass);
   MainForm := CreateWindow('TDataForm', PAnsiChar(Title), WS_DLGFRAME , XPos, YPos, 698, 517, 0, 0, hInstance, nil);
  end;
  </code></pre>
  
  <p>i need to have a form so i can get its handle from another application Using FindWindow and FindWindowEx if needed</p>