Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 676

/ вопрос решён /

Здравствуйте, эксперты!

Прошу помощи, что то у меня чисто техничекая часть не получается. Всё такий не подружился я с WinApi.

В примере представленном ниже должно получится окно которое находится поверх остальных окон не закрываймое с кнопкой "ПАТЧ", и картинкой вытащенной из "imageres.dll". На как то не срослось, подскажите мне мои ошибки.

Приложение:
  1. program dll_pic;
  2.  
  3. uses
  4. Windows,
  5. Messages;
  6.  
  7. Const
  8. MutexName='dll_pic';
  9. AppName='dll_pic';
  10.  
  11.  
  12. Btn1:cardinal;
  13. Edit1:cardinal;
  14. Wnd : HWND;
  15. Msg : TMsg;
  16. WndClass : TWndClassEx;
  17. dc,dcMem:HDC;
  18. hBmp,hOldBmp:HBITMAP;
  19. Bmp:Pointer;
  20. ps:TPaintStruct;
  21. h: THandle;
  22. B : TBitmap;
  23. function WindowProc(Handle,Msg,wParam,lParam:cardinal):integer;stdcall;
  24. var P:TPoint;
  25. Drive:string;
  26. pas: string;
  27. trupas: string;
  28. ptemp: array[0..MAX_PATH] of Char;
  29.  
  30. begin
  31. case Msg of
  32. WM_CREATE:begin
  33. Result:=0;
  34. Mutex:=CreateMutex(nil,false,MutexName);
  35. if Mutex=0 then MessageBox(Handle,'0',nil,0);
  36. if Mutex=ERROR_ALREADY_EXISTS then Result:=-1;
  37. Btn1:=CreateWindow('BUTTON', 'Pach',WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,700, 400, 200, 25, Handle, 0, hInstance, nil);
  38. begin
  39. begin
  40. h := LoadLibrary('C:\Windows\system32\imageres.dll');
  41. b := TBitmap.Create;
  42. b.LoadFromResourceName(h, '5031');
  43. dc:=getDC(wnd);dcMem:=CreateCompatibleDC(dc);
  44. hBmp:= LoadBitmap(hInstance,b);
  45. GetObject(hBmp,sizeof(BITMAP),bmp);
  46. hOldBmp:=SelectObject(dcMem,hBmp);
  47. ReleaseDC(wnd,dc);
  48. end;
  49. end;
  50. WM_PAINT :
  51. begin
  52. dc:=BeginPaint(Wnd, ps);
  53. BitBlt(dc,0,0,130,200,dcMem,0,0,SRCCOPY);
  54. EndPaint(Wnd, ps);
  55. end;
  56. WM_DESTROY:begin
  57.  
  58.  
  59. PostQuitMessage(0);
  60. Result:=0;
  61. end;
  62. else Result:=DefWindowProc(Handle,Msg,wParam,lParam);
  63. end;
  64. end;
  65.  
  66. //---------------------------------------------------------------------------------------
  67. var Handle:cardinal;
  68. WindowClass:TWndClass;
  69.  
  70. ZeroMemory(@WindowClass,sizeof(TWndClass));
  71.  
  72. Style:=cs_HRedraw or cs_VRedraw;
  73. lpfnWndProc:=@WindowProc;
  74. hCursor:=LoadCursor(0, idc_Arrow);
  75. hbrBackground:=GetStockObject(LtGray_Brush);
  76. lpszClassName:=AppName;
  77. end;
  78. if RegisterClass(WindowClass)=0 then Halt(255);
  79. Handle:=CreateWindow(AppName, 'dll_pic', WS_POPUP,
  80. cw_UseDefault, cw_UseDefault, cw_UseDefault, cw_UseDefault,
  81. 0, 0, HInstance, nil);
  82. ShowWindow(Handle, SW_MAXIMIZE);
  83. UpdateWindow(Handle);
  84.  
  85.  
  86. while GetMessage(Msg, 0, 0, 0) do begin
  87. TranslateMessage(Msg);
  88. DispatchMessage(Msg);
  89. end;
  90. UnregisterClass(AppName,hInstance);
  91. Halt(Msg.wParam);
  92. end.
  93.  
  94.  
  95.  


winner13 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: winner13 (статус: 1-ый класс)
Вопрос отправлен: 13 октября 2011, 18:17
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 0.

29 октября 2011, 21:00: Статус вопроса изменён на решённый (изменил автор вопроса — winner13)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:42
Выполнено за 0.02 сек.