Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Криво работает окно в dll при вызове из VCL exe [D7, WinXP]


Страницы:   1 2 3

parovoZZ ©   (2006-05-13 13:50:00) 

В ресурсах dll создал окно (в секции DIALOG), но при вызове оттуда работает криво: не двигается за шапку, все элементы съехали вниз, при потере фокуса обратно он не возвращается, хотя кнопки нажимаются, текст вводится. Может там надо создать своё родительское окно, а не передавать в качестве родителя хендл главной формы exe?

function LoginProc (DlgHandle: THandle; Msg, wParam, lParam: Integer) : integer; stdcall; export;
begin
case Msg of

  WM_COMMAND :
   case wParam of

    OK_Button :                          
      begin                      
       SendMessage (Handle, WM_LOGIN, WM_OK, 0);
       DestroyWindow (DlgHandle);
      end;

    Cancel_Button :
      begin
       DestroyWindow (Handle);
      end;
   end;

  WM_SYSCOMMAND :
   case wParam of

    SC_Close :
     begin
      DestroyWindow (Handle);
     end;
   end;

end;
Result := DefWindowProc (DlgHandle, Msg, wParam, lParam);
end;


parovoZZ   (2006-05-13 19:25:00) [41]

У меня в dll класс не создаётся. Я вот и спрашиваю - надо ли это?

А если в делфях создавать элементы в рантайм, то не подхватывается XP манифест. Да и зачем, если у меня есть Resource Workshop.


n0name   (2006-05-13 14:48:00) [42]

case ...
else
Result := DefWindowProc (DlgHandle, Msg, wParam, lParam);
end;


Dstr   (2006-05-13 14:16:00) [43]

Попробуй с помощью    //При создании класса
hwnd = CreateWindow(szAppName, "TCP_IP",
                 WS_SYSMENU|WS_MINIMIZEBOX|WS_TILED,
     300, 200,
     400, 350,
                 NULL, NULL, hInstance, NULL) ;

//А ето в месагах как ты уже наверно понял,ето си,но смысл один...

case WM_CREATE:

   hwndServer=CreateWindow("button","Create server",
      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
      2,225,100,25,
      hwnd,(HMENU)IDC_Server,hInst,NULL);

   hwndSend=CreateWindow("button","SendMsg",
      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
      250,225,100,25,
      hwnd,(HMENU)IDC_Send,hInst,NULL);

   hwndDisconnect=CreateWindow("button","Disconnect",
      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
      250,265,100,25,
      hwnd,(HMENU)IDC_Disconnect,hInst,NULL);

   hwndEdit_Ip = CreateWindowEx (WS_EX_CLIENTEDGE,"Edit","127.0.0.1",
                           WS_CHILD | WS_VISIBLE|
                           ES_LEFT ,
                           110,265,130,25, hwnd,(HMENU)EDIT_IPID,hInst, NULL);

   hwndClient=CreateWindow("button","Connect",
      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
      2,265,100,25,
      hwnd,(HMENU)IDC_Client,hInst,NULL);

   LoadLibrary ( "RICHED32.DLL");
   hwndEdit = CreateWindowEx (WS_EX_CLIENTEDGE,RICHEDIT_CLASS, NULL,
                           WS_CHILD | WS_VISIBLE|WS_VSCROLL|
                           ES_LEFT | ES_MULTILINE |ES_READONLY|
                           ES_AUTOVSCROLL,
                           0, 0, 390, 120, hwnd,(HMENU)EDITID,hInst, NULL);
   
   hwndEditSend = CreateWindowEx (WS_EX_CLIENTEDGE,RICHEDIT_CLASS, NULL,
                           WS_CHILD | WS_VISIBLE|WS_VSCROLL|
                           ES_LEFT | ES_MULTILINE |
                           ES_AUTOVSCROLL,
                           0,130, 390,60, hwnd,(HMENU)EDITSENDID,hInst, NULL);

   hwndSB=CreateStatusWindow(WS_CHILD | WS_VISIBLE |
                           WS_CLIPSIBLINGS | CCS_BOTTOM |SBARS_SIZEGRIP,"Not connected",
      hwnd,IDC_SB);

  SendMessage(hwndEdit, EM_LIMITTEXT, 1024 * 1024, 0);
  SendMessage(hwndEditSend, EM_LIMITTEXT, 1024 * 1024, 0);


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо