系统托盘编程

来源:互联网 发布:nginx 80端口配置 编辑:程序博客网 时间:2024/05/08 06:21
 【写于大二寒假无聊的一天】

这两天想写个小程序,一个图标在系统托盘上的小程序,于是查了一晚上MSDN,在此作一个小小的总结。

平台:Microsoft Visual Studio 2005

类库:.NET Framework 2.0 Windows Form

语言:C++/CLI

 

我们知道,写一个Windows Form程序,主要就是写一个自己的Form类,不妨取名为MyForm,继承于类库中的Form类。

public ref class MyForm : public System::Windows::Forms::Form

{

}

 

接下来,主要说明一下关于系统托盘的几个控件的导入和编写(其他的按钮等不再说明)。

首先,为了不在任务栏上看到程序的标签,我们先把该标签隐藏。(没有特别说明,下面所有的语句都加入到MyForm的初始化函数中)

this->ShowInTaskbar = false;

 

然后再来添加系统托盘上的图标。系统托盘图标的空间名为NofityIcon,我们在MyForm类中添加一个私有成员,命名为 notifyIcon1

private: System::Windows::Forms::NotifyIcon^  notifyIcon1;

 

只是这样还不能显示图标,我们还需要给程序加载一个系统托盘图标。

this->notifyIcon1->Icon = (cli::safe_cast<System::Drawing::Icon^>(resources->GetObject(L"notifyIcon1.Icon")));

 

然后我们可以通过notifyIcon1的成员属性Visible来控制是否显示图标。如果显示:

this->notifyIcon1->Visible = true;

 

当我们把鼠标移动到图标上时,可以出现浮动框。如果只是出现静态文字。我们只需简单的设置notifyIcon1Text属性。

this->notifyIcon1->Text = “这里为要显示的文字”;

 

如果要显示更为详细的信息,我们可以通过设置BalloonTipIconBalloonTipTextBalloonTipTitle属性来控制。再调用ShowBalloonTip方法来显示。

如果要动态显示,我们可以为上述的几个属性和方法写成一个事件,各属性值为随时取得的所需值。这里不作详细讨论。

 

基本功能实现了,现在我们需要右键单击图标时,出现一个快捷菜单,这个是程序中常用的功能。

首先,我们建立一个快捷菜单,比如叫ctMenu,作为MyForm的私有成员。

private: System::Windows::Forms::ContextMenuStrip^  ctMenu;

 

然后我们为notifyIcon1加载该菜单。

this->notifyIcon1->ContextMenuStrip = this->ctMenu;

 

接下来就是完成这个快捷菜单。这里说下最基本的操作,就是添加菜单。比如我们要添加三个一级菜单。

首先是建立三个菜单。

private: System::Windows::Forms::ToolStripMenuItem^  菜单1;

private: System::Windows::Forms::ToolStripMenuItem^  菜单2;

private: System::Windows::Forms::ToolStripMenuItem^  菜单3;

 

然后我们加载这些菜单。

this->ctMenu->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(3) {this->菜单1, this->菜单2, this->菜单3});

 

如果我们 [菜单1] 还有两个二级菜单。我们可以这么做,先定义两个菜单。

private: System::Windows::Forms::ToolStripMenuItem^  菜单11;

private: System::Windows::Forms::ToolStripMenuItem^  菜单12;

 

然后在加载到菜单1上面。

this->菜单1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(2) {this->菜单11, this->菜单12});

 

这些是Windows Form中写系统托盘程序的主要方法,当然要完善这个程序,还是要做很多工作的。