![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Криво работает окно в dll при вызове из VCL exe [D7, WinXP]
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);