delphi的小小问题(20分)

  • 主题发起人 主题发起人 apple058
  • 开始时间 开始时间
A

apple058

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:

; ; ; ;我想模拟 Windows 窗口 的 标题栏右上的的 3 个 功能
; ; ; ;我只知道 关闭按钮 是 form1.close
; ; ; ;
; ; ; ;请问 ; 最小化 窗体 ,最大化 窗体,还原窗体 应该怎编写(最好不用窗体属性的最下一个属性)
; ; ;
; ; ; ;谢谢!!! ; ; ;

; ; ; ; ;
; ; ; ; ;
 
WinAPI 函数ShowWindow
 
; ;可我还是不知道怎么用? 高手们有没有说的更清楚的??? ^_^
 
答案非常简单:利用Form的WindowState属性
form1.WindowState := wsMinimized;
form1.WindowState := wsMaximized;
动辄用API,吓唬谁?
 
为什么不用FORM的最后一个属性?用了有什么不好:)
哪个方便就用哪个吗
BY THE WAY,整个程序的最小化还可以用application.minimize;
 
form1.WindowState:=wsmaximized;

; ;form1.WindowState:=wsminimized;

; ; form1.WindowState:=wsnormal;
 
可以发送消息,,呵呵,我只能这样做可以,但是我不知道个具体用那个消息
 
; ;有没有高手会发送消息阿!!!
 
WM_GETMINMAXINFO就是最大化消息,其他类推。。。
 
;你在请问各位: 有没有判断 按了 标题栏 的 3 个按钮 (最小化,最大化/还原,关闭)的事件。
; ; ; ; ; ; ; ; ;也就是说 当按下 “ 最小化,最大化/还原,关闭“,所发生的事件!
 
该发分了
你重载掉WM_SYSCOMMAND消息
procedure mymsg(var msg:TMSG); message WM_SYSCOMMAND;

procedure tform1.mymsg(var msg:TMSG);
begin
; ; case msg.wParam of
; ; SC_MAXIMIZE:// Maximizes the window.
; ;SC_MINIMIZE:// Minimizes the window.
; ; .................................. ; ;
; ; end;
end;

This is the details comments of WM_SYSCOMMAND in ;MSDN.

; Platform SDK: Windows User Interface
WM_SYSCOMMAND
A window receives this message when the user chooses a command from the window menu (formerly known as the system or control menu) or when the user chooses the maximize button, minimize button, restore button, or close button.

A window receives this message through its WindowProc function.

LRESULT CALLBACK WindowProc(
; HWND hwnd, ; ; ; // handle to window
; UINT uMsg, ; ; ; // WM_SYSCOMMAND
; WPARAM wParam, ; // system command type
; LPARAM lParam ; ;// horizontal and vertical position
);
Parameters
wParam
Specifies the type of system command requested. This parameter can be one of the following values. Value Meaning
SC_CLOSE Closes the window.
SC_CONTEXTHELP Changes the cursor to a question mark with a pointer. If the user then clicks a control in the dialog box, the control receives a WM_HELP message.
SC_DEFAULT Selects the default item; the user double-clicked the window menu.
SC_HOTKEY Activates the window associated with the application-specified hot key. The lParam parameter identifies the window to activate.
SC_HSCROLL Scrolls horizontally.
SC_KEYMENU Retrieves the window menu as a result of a keystroke. For more information, see the Remarks section.
SC_MAXIMIZE Maximizes the window.
SC_MINIMIZE Minimizes the window.
SC_MONITORPOWER Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.
The lParam parameter can have the following values:

1 - the display is going to low power
2 - the display is being shut off
;
SC_MOUSEMENU Retrieves the window menu as a result of a mouse click.
SC_MOVE Moves the window.
SC_NEXTWINDOW Moves to the next window.
SC_PREVWINDOW Moves to the previous window.
SC_RESTORE Restores the window to its normal position and size.
SC_SCREENSAVE Executes the screen saver application specified in the [boot] section of the System.ini file.
SC_SIZE Sizes the window.
SC_TASKLIST Activates the Start menu.
SC_VSCROLL Scrolls vertically.


lParam
The low-order word specifies the horizontal position of the cursor, in screen coordinates, if a window menu command is chosen with the mouse. Otherwise, this parameter is not used.
The high-order word specifies the vertical position of the cursor, in screen coordinates, if a window menu command is chosen with the mouse. This parameter is –1 if the command is chosen using a system accelerator, or zero if using a mnemonic.

Return Values
An application should return zero if it processes this message.

Remarks
To obtain the position coordinates in screen coordinates, use the following code:

xPos = GET_X_LPARAM(lParam); ; ;// horizontal position
yPos = GET_Y_LPARAM(lParam); ; ;// vertical position
The DefWindowProc function carries out the window menu request for the predefined actions specified in the previous table.

In WM_SYSCOMMAND messages, the four low-order bits of the wParam parameter are used internally by the system. To obtain the correct result when testing the value of wParam, an application must combine the value 0xFFF0 with the wParam value by using the bitwise AND operator.

The menu items in a window menu can be modified by using the GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem, and SetMenuItem functions. Applications that modify the window menu must process WM_SYSCOMMAND messages.

An application can carry out any system command at any time by passing a WM_SYSCOMMAND message to DefWindowProc. Any WM_SYSCOMMAND messages not handled by the application must be passed to DefWindowProc. Any command values added by an application must be processed by the application and cannot be passed to DefWindowProc.

Accelerator keys that are defined to choose items from the window menu are translated into WM_SYSCOMMAND messages; all other accelerator keystrokes are translated into WM_COMMAND messages.

If the wParam is SC_KEYMENU, lParam contains the character code of the key that is used with the ALT key to display the popup menu. For example, pressing ALT+F to display the File popup will cause a WM_SYSCOMMAND with wParam equal to SC_KEYMENU and lParam equal to 'f'.

Requirements
; Windows NT/2000: Requires Windows NT 3.1 or later.
; Windows 95/98: Requires Windows 95 or later.
; Header: Declared in Winuser.h; include Windows.h.

See Also
Keyboard Accelerators Overview, Keyboard Accelerator Messages, AppendMenu, DefWindowProc, GET_X_LPARAM, GET_Y_LPARAM, GetSystemMenu, InsertMenu, ModifyMenu, WM_COMMAND

Built on Thursday, October 12, 2000Requirements
; Windows NT/2000: Requires Windows NT 3.1 or later.
; Windows 95/98: Requires Windows 95 or later.
; Header: Declared in Winuser.h; include Windows.h.
See Also
Keyboard Accelerators Overview, Keyboard Accelerator Messages, AppendMenu, DefWindowProc, GET_X_LPARAM, GET_Y_LPARAM, GetSystemMenu, InsertMenu, ModifyMenu, WM_COMMAND
 
最小化: showwindow(handle,sw_hide) ;//实际上是隐藏
还 ;原: showwindow(handle,sw_show) ;//handle 为隐藏窗体的句柄.
 
多人接受答案了。
 
后退
顶部