ありがとう!! WM_MDICREATEメッセージを使用して、clientWndProcでmdi子のハンドルを取得したい
procedure TFrmMain.ClientWndProc(var Message: TMessage);
var
Hwnd : HWND;
procedure Default;
begin
with Message do
Result := CallWindowProc(FClientWndProc, ClientHandle, Msg, wParam, lParam);
end;
begin
case Message.Msg of
WM_MDICREATE:
begin
hwnd := Message.LParam; //dont' work
hwnd := TWMMDICreate(Message).MDICreateStruct^.lparam; //don't work
Default;
end;
end;
inherited ClientWndProc(Message);
end;
MDICHILD起動時の次のプロシージャ(ChildProc)を、MainFormのClientWndProcプロシージャにバインドしたい
function childProc(hwnd: HWND; msg, wParam,lParam: LongInt): LongInt; stdcall;
begin
if msg = WM_SYSCOMMAND then
begin
CallWindowProc(p,hwnd,msg,wparam,lparam);
if WParam = SC_MINIMIZE then
//do something
end;
result := CallWindowProc(p,hwnd,msg,wparam,lparam);
end;
私は新しい子供の形のハンドルが必要です、そのようなもの
P := Pointer(SetWindowLong(ActiveMDIChild.Handle, GWL_WNDPROC, integer(@Child)));