Показать сообщение отдельно
  #1  
Старый 29.09.2010, 15:29
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию Использование WMNCHitTest в winapi

Код:
private
    procedure WMNCHitTest (var M: TWMNCHitTest); message wm_NCHitTest;
///
procedure TForm1. WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then
    M.Result := htCaption;
end;
Вызвается если использовать vlc формы, но в случае с win api такой трюк не пройдёт, и если форма без Caption хоть монитор в окно выкень, не чего не сработает, что само собой огорчает. Есть ли способы прикрутить эту процедуру к такому коду:
Код:
program APIx_Project3;

uses
  windows,
  messages,
  commctrl;

var
  WinClass : TWndClass;
  Form : HWND;
  Handle : HWND;
  Msg : TMSG;
  hFont : HWND;
  HRegion1, Hreg2, Hreg3: THandle;
  Region: HRGN;

procedure ShutDown; //ïðîöåäóðà çàâåðøåíèÿ ïðîãðàììû
begin
  DeleteObject(hFont); //óäàëåíèå øðèôòà
  UnRegisterClass('TAPIxForm', Form); //óäàëåíèå îêíà
  ExitProcess(Form); //çàêðûòèå ïðîãðàììû
end;

function WindowProc(hwnd, msg, wparam, lparam: longint): longint; stdcall; //îáðàáîò÷èê ñîîáùåíèé
begin
  Result := DefWindowProc(hwnd, msg, wparam, lparam);
  case Msg of
WM_COMMAND:
//if (lParam = ...) and (HiWord(wParam) = BN_CLICKED) then
  begin
//  ...;
  end;
  WM_DESTROY: ShutDown;
  end;
end;

begin
Form := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := CS_PARENTDC;
   hIcon := LoadIcon(Form, MAKEINTRESOURCE('APIXICON'));
   lpfnWndProc := @WindowProc;
   hInstance := Form;
   hbrBackground := COLOR_BTNFACE;
   lpszClassName := 'TAPIxForm';
   hCursor := LoadCursor(0, IDC_ARROW);
   Region := CreateEllipticRgn(0, 0, 490, 300);
  end;
InitCommonControls;
RegisterClass(WinClass);

Handle := CreateWindowEx(0, 'TAPIxForm', 'NAC',
WS_POPUP or WS_GROUP or
WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU or WS_EX_CLIENTEDGE,
219, 116, 500, 366,
0, 0,
Form, nil);
   SetWindowRgn(Handle, Region, True);
   ShowWindow(Handle, SW_SHOW);
   UpdateWindow(Handle);

hFont := CreateFont(
-11, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');

  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
  end.
winapi изучаю только третий день, если не будет трудно прям в коде объясните где вставить
Ответить с цитированием