Использование 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 изучаю только третий день, если не будет трудно прям в коде объясните где вставить
|