怎么把一个窗体最小化到任务栏中?

scxtzcnc 2006-12-18 10:18:36
我想用一个按钮来实现最小化窗体,并且是最小化到任务栏中,请各位帮帮忙
...全文
380 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqm 2007-01-11
  • 打赏
  • 举报
回复
学习
wood542344 2007-01-11
  • 打赏
  • 举报
回复
jishiping(JSP 季世平) ( )
的方法是正解。
这个东东在设计多窗体程序的时候经常会用到。
laowang2 2007-01-11
  • 打赏
  • 举报
回复
mark
ccgk2005 2007-01-08
  • 打赏
  • 举报
回复
用TrayIcon1;
不用写事件
然后定义一个PopupMenu1
之后让TrayIcon的PopupMenu指向PopupMenu1即可
loveshell 2006-12-25
  • 打赏
  • 举报
回复
学习
CruelYoung123 2006-12-21
  • 打赏
  • 举报
回复
mark
daydayup234 2006-12-18
  • 打赏
  • 举报
回复
看看
WindowState=wsMinimized;
seuysjawd 2006-12-18
  • 打赏
  • 举报
回复
可以用系统托盘,添加一个按钮和PopupMenu1(返回)按钮处代码如下:
this->Visible = false;
ShowWindow(Application->Handle,SW_HIDE);
Application->ShowMainForm = false;

PopupMenu1处代码为:
this->Visible = true;
Application->ShowMainForm = true;
jishiping 2006-12-18
  • 打赏
  • 举报
回复
重载 CreateParams,将父窗口设为 NULL

class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
protected:
void __fastcall CreateParams(TCreateParams ¶ms);
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};

__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::CreateParams(TCreateParams ¶ms)
{
TForm::CreateParams(Params);
Params.WndParent = NULL;
}
old_bonze 2006-12-18
  • 打赏
  • 举报
回复
#include <shellapi.hpp>


//显示图标。
void __fastcall TMainForm::ShowTrayIcon()
{
//说明:m_TrayIcon是TMainForm中定义的一个成员,TIcon* m_TrayIcon;
m_TrayIcon = new TIcon();

//imglstResources是一个ImageList,索引0加载了你要在tray区域显示的图标。
imglstResources->GetIcon(0,m_TrayIcon);

TNotifyIconData IconData;

IconData.cbSize = sizeof( IconData );
IconData.hWnd = Handle;
IconData.uID = 100;
IconData.hIcon = m_TrayIcon->Handle;
IconData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
IconData.uCallbackMessage = WM_APP_TRAYICON; //WM_APP_TRAYICON为自定义Windows消息
strcpy( IconData.szTip, Caption.c_str() );
Shell_NotifyIcon( NIM_ADD, &IconData );
}

//处理点击或右击事件
//在TMainForm中需要建立消息映射:
// BEGIN_MESSAGE_MAP
// VCL_MESSAGE_HANDLER(WM_APP_TRAYICON, TMessage, WhenIconMessage)
// END_MESSAGE_MAP(TForm)
// WM_APP_TRAYICON为自定义的Windows消息ID

void __fastcall TMainForm::WhenIconMessage(TMessage& Msg)
{
TPoint pt;
if( Msg.LParam == WM_LBUTTONUP ||Msg.LParam == WM_RBUTTONUP )
{
GetCursorPos( &pt );
SysPopupMenu->Popup( pt.x, pt.y );
}
}

//清除图标
void __fastcall TMainForm::ClearTrayIcon()
{
TNotifyIconData IconData;
IconData.cbSize = sizeof( IconData );
IconData.hWnd = Handle;
IconData.uID = 100;
Shell_NotifyIcon( NIM_DELETE, &IconData );
//我前面的m_TrayIcon还没有delete,根据你的需要在适当的地方记得删除。
}
scxtzcnc 2006-12-18
  • 打赏
  • 举报
回复
谢谢回复,也不行,只能最小化到桌面上

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧