就是象正常窗口那样点窗口左上角的ICON出的那个系统菜单。
我用如下方法没有成功能,我想原因就是因为无边框,如何解决呢???
void __fastcall TForm1::ICON_ImageClick(TObject *Sender)
{
int id;
POINT pos;
GetCursorPos(&pos);
id = TrackPopupMenu(GetSystemMenu(Form1->Handle,false), TPM_LEFTALIGN | TPM_RETURNCMD |TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pos.x, pos.y, 0, Handle, NULL);
SendMessage (Handle, WM_SYSCOMMAND, id, NULL);
}
6 个解决方案
#1
要自已做各种功能了,没有边框的窗体怎么会有最大化,最小化等的功能呢!
#2
不必编程也可,你自己做个子菜单,
在你的界面上从控件菜单再加一个actionlist,
然后从new standardaction...里选择你要的东东,
(里面有最大化,最小化。。。。)
将actionlist的动作和你的子菜单选项连接起来,就ok了,
不必写一条程序耶!!!!
在你的界面上从控件菜单再加一个actionlist,
然后从new standardaction...里选择你要的东东,
(里面有最大化,最小化。。。。)
将actionlist的动作和你的子菜单选项连接起来,就ok了,
不必写一条程序耶!!!!
#3
你需要自己做一个弹出菜单,菜单的内容就是系统菜单的那些项目。然后,
这些菜单项是否能用需要你自己根据当前窗口的状态作判断。关键是在菜单
的事件OnClick里写代码,向窗口发送系统命令消息。下面是各个菜单对应的
ID。
还原 -- SC_RESTORE 移动 -- SC_MOVE 大小 -- SC_SIZE
最小化 -- SC_ICON 最大化 -- SC_ZOOM 关闭 -- SC_CLOSE
发送消息如下:
SendMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SendMessage(Handle, WM_SYSCOMMAND, SC_ZOOM, 0); .......
这些菜单项是否能用需要你自己根据当前窗口的状态作判断。关键是在菜单
的事件OnClick里写代码,向窗口发送系统命令消息。下面是各个菜单对应的
ID。
还原 -- SC_RESTORE 移动 -- SC_MOVE 大小 -- SC_SIZE
最小化 -- SC_ICON 最大化 -- SC_ZOOM 关闭 -- SC_CLOSE
发送消息如下:
SendMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SendMessage(Handle, WM_SYSCOMMAND, SC_ZOOM, 0); .......
#4
自己作一个菜单,里面有关闭,最大化,最小化等等。
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
#5
自己作一个菜单,里面有关闭,最大化,最小化等等。
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
#6
自己作一个菜单,里面有关闭,最大化,最小化等等。
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
#1
要自已做各种功能了,没有边框的窗体怎么会有最大化,最小化等的功能呢!
#2
不必编程也可,你自己做个子菜单,
在你的界面上从控件菜单再加一个actionlist,
然后从new standardaction...里选择你要的东东,
(里面有最大化,最小化。。。。)
将actionlist的动作和你的子菜单选项连接起来,就ok了,
不必写一条程序耶!!!!
在你的界面上从控件菜单再加一个actionlist,
然后从new standardaction...里选择你要的东东,
(里面有最大化,最小化。。。。)
将actionlist的动作和你的子菜单选项连接起来,就ok了,
不必写一条程序耶!!!!
#3
你需要自己做一个弹出菜单,菜单的内容就是系统菜单的那些项目。然后,
这些菜单项是否能用需要你自己根据当前窗口的状态作判断。关键是在菜单
的事件OnClick里写代码,向窗口发送系统命令消息。下面是各个菜单对应的
ID。
还原 -- SC_RESTORE 移动 -- SC_MOVE 大小 -- SC_SIZE
最小化 -- SC_ICON 最大化 -- SC_ZOOM 关闭 -- SC_CLOSE
发送消息如下:
SendMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SendMessage(Handle, WM_SYSCOMMAND, SC_ZOOM, 0); .......
这些菜单项是否能用需要你自己根据当前窗口的状态作判断。关键是在菜单
的事件OnClick里写代码,向窗口发送系统命令消息。下面是各个菜单对应的
ID。
还原 -- SC_RESTORE 移动 -- SC_MOVE 大小 -- SC_SIZE
最小化 -- SC_ICON 最大化 -- SC_ZOOM 关闭 -- SC_CLOSE
发送消息如下:
SendMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SendMessage(Handle, WM_SYSCOMMAND, SC_ZOOM, 0); .......
#4
自己作一个菜单,里面有关闭,最大化,最小化等等。
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
#5
自己作一个菜单,里面有关闭,最大化,最小化等等。
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
#6
自己作一个菜单,里面有关闭,最大化,最小化等等。
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP
然后在每个菜单的响应事件中向窗口发送WM_SYSCOMMAND消息:
Perform(WM_SYSCOMMAND,SC_CLOSE,0);//关闭
其它系统菜单命令:
移动:SC_MOVE
大小:SC_SIZE
还原:SC_RESTORE
最小化:SC_MINIMIZE
最大化:SC_MAXIMIZE
帮助:SC_CONTEXTHELP