/*
* System Menu Command Values
* 下面是功能段的其实位置
* 比如 0xF00~0xF00F是SC_SIZE即改变窗口大小
* 0xF00~0xF00F之间的值有不同的功能,具体功能见下面
* Windows可能是根据0xF???的范围来决定功能的,而不是具体的值
* winuser.h中定义了所有(MS告诉你的)消息对应的值和wParam和lParam对应的值
*/
#define SC_SIZE 0xF000 //窗口大小
#define SC_MOVE 0xF010 //移动窗口
#define SC_MINIMIZE 0xF020 //窗口最消化
#define SC_MAXIMIZE 0xF030
#define SC_NEXTWINDOW 0xF040
#define SC_PREVWINDOW 0xF050
#define SC_CLOSE 0xF060
#define SC_VSCROLL 0xF070
#define SC_HSCROLL 0xF080
#define SC_MOUSEMENU 0xF090
#define SC_KEYMENU 0xF100
#define SC_ARRANGE 0xF110
#define SC_RESTORE 0xF120
#define SC_TASKLIST 0xF130 //弹出开始菜单!
#define SC_SCREENSAVE 0xF140
#define SC_HOTKEY 0xF150
#if(WINVER >= 0x0400)
#define SC_DEFAULT 0xF160
#define SC_MONITORPOWER 0xF170
#define SC_CONTEXTHELP 0xF180 //鼠标箭头右边加了个问号(表面看是这样的)
#define SC_SEPARATOR 0xF00F //改变窗口大小
#endif /* WINVER >= 0x0400 */
一下面代码为例
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Button == mbLeft)
{
ReleaseCapture();
Perform(WM_SYSCOMMAND, 0x????, 0);
}
}
0xF001 以右边为基点改变Form.Width
0xF002 以左边为基点改变Form.Width
0xF003 以下边为基点改变Form.Height
0xF004 以右下角为基点改变Form.Width,Form.Height
0xF005 以左下角为基点改变Form.Width,Form.Height
0xF006 以上边为基点改变Form.Height //这一定和0xF002有区别,但在上面代码中看不出来
0xF007 以右上角为基点改变Form.Height
0xF008 以左上角为基点改变Form.Height
0xF009 鼠标位置不变,移动窗口
0xF00A 将鼠标移到标题栏正中间,然后再移动窗口,如果没有标题栏就移动到(Width/2,0),但无法移动
0xF00B 以右下角为基点改变Form.Width,Form.Height。但是改变方式与0xF004不同:鼠标上下移动改变宽度,左右移动改变高度
0xF00C 以左边为基点改变Form.Width //鼠标上下移动改变宽度,左右移动改变高度
0xF00D =0xF002 以左边为基点改变Form.Width
0xF00E =0xF00B 以右下角为基点改变Form.Width,Form.Height。但是改变方式与0xF004不同:鼠标上下移动改变宽度,左右移动改变高度
0xF00F 以右边为基点改变Form.Width //鼠标上下移动改变宽度,左右移动改变高度
0xF010 =0xF00A将鼠标移到标题栏正中间,然后再移动窗口,如果没有标题栏就移动到(Width/2,0),但无法移动
0xF011 鼠标位置不变
浙公网安备 33010602011771号