搜档网
当前位置:搜档网 › Winform托盘显示及开机启动

Winform托盘显示及开机启动

Winform托盘显示及开机启动
Winform托盘显示及开机启动

拉一个NotifyIcon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。

添加一个ContextMenuStrip控件,然后设置notifyIcon1的属性ContextMenuStrip为你添加的contextMenuStrip1

如果不想让程序在任务栏中显示,请把窗体的属性ShowInTaskbar设置为false

代码:

//最小化事件,显示到托盘

private void Form1_Resize(object sender, EventArgs e)

{

if (this.WindowState == FormWindowState.Minimized)

{

this.Visible = false;

}

}

//托盘图标单击显示

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)

{

this.Visible = true;

this.TopMost = true;

this.WindowState = FormWindowState.Normal;

this.Activate();

}

//假关闭,关闭时隐藏

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

e.Cancel = true;

this.Visible = false;

}

/加入注册表启动项

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);

if (key == null)

{

key = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run

");

key.SetValue("xxx系统", this.GetType().Assembly.Location + " -s");

}

else

{

key.SetValue("xxx系统", this.GetType().Assembly.Location + " -s");

}

key.Close();

然后在program.cs中

然后Form1的load事件中判断args,如果正常双击打开的话,是没有命令参数的,也就是args 为空,此时让Form1显示,

如果是注册表开机启动的话,则args的值不为空,为命令行参数-s,此时应让Form1隐藏

代码如下:

String arg = null;

public Form1(String[] args)

{

if (args.Length > 0)

{

//获取启动时的命令行参数

arg = args[0];

}

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

if (arg != null)

{

//arg不为空,说明有启动参数,是从注册表启动的,则直接最小化到托盘

this.Visible = false;

this.ShowInTaskbar = false;

}

}

设置注册表启动时多加一项命令行-s(注:这个内容由你自定义,-a -b -abc 都行)

C# WinForm自定义控件开发实例

C# WinForm自定义控件开发实例 最近做一个图象的采集,需要一个图形的选择控件,但是在.net下没有类似vb中的shape控件,所以考虑了自己写一个控件。下面我将从头创建控件,这个控件主要是用来选择图形的Rectangle,有一下几个属性Color BorderColor:边框颜色,Color BackColor:背景颜色,bool ReSizeble:是否可移动,Rectangle SelectRectangle:选择区域。 打开vs2003(我用的这个版本),新建一个c#控件库,ok,拷贝如下代码到你的代码里。using System;using System.Collections;using https://www.sodocs.net/doc/6a2371264.html,ponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace WindowsExtendedControls{ /// /// 控件/// public class ShapeEx : System.Windows.Forms.Control { /// /// 必需的设计器变量。/// /// private Color _BorderColor=new Color(); private Color _BackColor=new Color(); private bool _ReSizeble; private Point _SelfLocation=new Point(); private Point _MouseLocation=new Point(); private int _SelfWidth; private int _SelfHeight; private int _SelectSelctedIndex;//0-8,0:SizeAll private Rectangle

程序最小化到托盘

VC++6.0中实现将应用程序的图标加入到Windows的系统托盘中(就是为应用程序在桌面右下角添加一个图标,和QQ类似)有位老兄说我乱贴,可能这位老兄已经看得眼花缭乱了,Shell_NotifyIcon 是一个Windows SDK的一个函数,只要你在windows下编程,不管你是BCB、VC、VB,都可以调用它来实现托盘图标,只是调用方法不同罢了。 常常能见到一些优秀的软件在运行后会将其应用程序图标加入到系统托盘中。如果能将自己编写的应用程序的图标也加入到系统托盘中,将会使你的程序显得很有专业水准。其实这并不困难,与系统托盘通信的函数只有一个: Shell_NotifyIcon (UINT message, NOTIFYICONDATA &m_nid); 首先看一下该函数的两个参数。 第一个参数message可以取以下值:NIM_ADD 向托盘中加入一个图标; NIM_MODIFY 修改托盘中的图标;NIM_DELETE 从托盘中删除一个图标; 第二个参数m_nid是NOTIFYICONDATA结构的一个引用。该结构的原型如下: typedef struct _NOTIFYICONDATA { DWORD cbSize;// 结构的大小,必须在程序中给出 HWND hWnd; //是你程序中将要接收托盘消息的窗口句柄 UINT uID; // 应用程序中定义的托盘图标ID,此参数用作标识 UINT uFlags; //设置属性,低三位有意义,0--7,如下: //第一位//#define NIF_MESSAGE 0x1 // uCallbackMessage参数有效 //第二位//#define NIF_ICON 0x2 // hIcon参数有效 //第三位//#define NIF_TIP 0x4 // szTip参数有效UINT uCallbackMessage; // 自定义的消息ID值,一定不要与以有的消息ID相重。 HICON hIcon; //显示在系统托盘上的Icon的句柄,可以为系统的IDI_WINLOGO等 CHAR szTip[64]; // 用于图标显示的提示字符串 } NOTIFYICONDATA; 为了接收到来自托盘的通知消息你可以将uCallbackMessage设定为你所定义的消息ID值,同时设定NIF_MESSAGE标志。这样当用户在你的托盘图标上移动或按下鼠标时,Windows将发出消息:该消息的messageID是你在uCallbackMessage中定义的值;wParam是你定义的uID值;而lParam是鼠标事件(如WM_LBUTTONDOWN),这样你的应用程序就能响应该事件了。因此,为了将自己的应用程序加入到系统托盘中,首先得建立一处理托盘通知消息的窗口对象,然后将窗口对象与你自己的托盘通知消息联系起来并建立相应的托盘通知消息映射机制,以便你的窗口对象能处理相应的事件。可以看到结构体NOTIFYICONDATA中,其成员变量hWnd,uID,uFlags均用于在窗口对象与你自己的托盘通知消息之间建立联系,而成员变量uCallbackMessage则必须是对应于你的窗口对象的托盘通知消息ID值。于是要完成的工作有: (1)建立一处理托盘通知消息的窗口对象; (2)建立一结构体NOTIFYICONDATA变量,并给变量的相应域赋值以在托盘通知消息与窗口对象之间建立联系; (3)建立相应的托盘通知消息映射机制; (4)调用Shell_NotifyIcon函数以在系统托盘中加入、修改或删除图标; (5)当然别忘了在你的窗口对象中编写相应的事件响应函数。

福建师范大学网络与继续教育学院《计算机应用基础》期末考试A卷2020年2月(可编辑修改word版)

▆■■■■■■■■■■■■ 用 POP3(IMAP)协议读取邮件。 4、简述通过无线 Wi-Fi 接入 Internet 的方法。 答:1.先申请运营商宽带,运营商安装好光猫,开通互联网。 2.无线路由器接到光猫上,采用动态获取方式接入互联网。 3.在无线路由器上配置 Wi-Fi 名称和密码。 4.手机或笔记本电脑用 Wi- Fi 搜索无线路由器名称,输入密码连接成功,接入 Internet。 5、简述防火墙的作用及其安全方案。 答:防火墙是目前一种最重要的网络防护设备。从专业角度讲,防火墙是位于两个(或多个)网络间,实施网络之间访问控制的一组组件集合。一般有五个功能。 1.防火墙是网络安全的屏障:一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸如众所周知的不安全的 NFS 协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受基于路由的攻击,如 IP 选项中的源路由攻击和 ICMP 重定向中的重定向路径。防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。 2.防火墙可以强化网络安全策略:通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。 3.对网络存取和访问进行监控审计:如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。另外,收集一个网络的使用和误用情况也是非常重要的。首先的理由是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。 4.防止内部信息的外泄:通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如 Finger,DNS 等服务。Finger 显示了主机的所有用户的注册名、 真名,最后登录时间和使用 shell 类型等。但是 Finger 显示的信 息非常容易被攻击者所获悉。攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时 引起注意等等。防火墙可以同样阻塞有关内部网络中的DNS 信息,这样一台主机的域名和 IP 地址就不会被外界所了解。 5.防火墙还支持具有 Internet 服务特性的企业内部网络技 术体系 VPN(虚拟专用网)。

VB托盘程序详解

【转载】VB托盘程序详解 2007/11/25 20:53 1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False 2、菜单:工程--添加模块按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas 3、在Module1中写下如下代码: Option Explicit Public Const MAX_TOOLTIP As Integer = 64 Public Const NIF_ICON = &H2 Public Const NIF_MESSAGE = &H1 Public Const NIF_TIP = &H4 Public Const NIM_ADD = &H0 Public Const NIM_DELETE = &H2 Public Const WM_MOUSEMOVE = &H200 Public Const WM_LBUTTONDOWN = &H201 Public Const WM_LBUTTONUP = &H202 Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_RBUTTONDOWN = &H204 Public Const WM_RBUTTONUP = &H205 Public Const WM_RBUTTONDBLCLK = &H206 Public Const SW_RESTORE = 9 Public Const SW_HIDE = 0 Public nfIconData As NOTIFYICONDATA Public Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * MAX_TOOLTIP End Type Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

电气工程师个人简历模板

电气工程师个人简历模板 ◆基本信息 姓名: 彭先生 目前所在:东莞年龄:34 户口所在:湖南国籍:中国 婚姻状况:已婚民族:汉族 诚信徽章:未申请身高:170cm 人才测评:未测评体重: 我的特长: ◆求职意向 人才类型:普通求职 应聘职位:工程/设备-经理/主管/工程师 工作年限:10职称: 求职类型:全职可到职日期:一个月 月薪要求:希望工作地区:广东省,, ◆工作经历 公司性质:外商独资所属行业:电子技术/半导体/集成电路担任职位:电气工程师

工作描述:1、对耗能高的动力设备进行优化节能改造,特别是已停产的老设备。如公司的美国约克冷冻机直接去掉滑阀,由变频器控制压缩机,达到节能与优化的目的。 2、对新增动力设备如空压机、冷冻机、中央空调、真空泵系统与净化车间控制设备、高低压配电系统等的设备招标选型,直到正常投入生产。同时制定严格的安全操作规程与保养、点检计划,保障设备安全运行。 3、公司纯水系统、污水处理系统的规划与维护、保养。根据制定的操作规程合理安排安全操作与维护保养,保障系统的安全,达到生产与国家环保要求。 离职原因: 中粮新沙粮油工业(东莞)有限公司起止年月:2004-03~2008-05 担任职位:电气主管 2、对精炼包装车间和浸出车间发油台的由PLC、变频器、触摸屏等工控元件控制的自控系统,由本人重新进行了设计,达到即提高了工作效率又优化了工艺。 4、做好维修人员的生产调度和培训工作及安全检查,对于技术上的难题给予技术性指导。同时做好易损件的申购工作,以备紧急情况之急需,保证生产。 离职原因: 汤姆逊多媒体(东莞)有限公司起止年月:2000-03~2004-03 公司性质:外商独资所属行业:通信/电信/网络设备 担任职位:电气工程师 工作描述:主要是塑料车间、生产部、仪器仪表的维护与安全检查,特别是自动化设备的维修与保养,PLC、变频器、伺服电机等自动化设备的设计与安全维护。 离职原因:

MFC基于Dialog的窗口程序启动时最小化到托盘

MFC基于Dialog的窗口程序启动时最小化到托盘 一、托盘是什么 所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。 二、NOTIFYICODDATA结构和Shell_NotifyIcon函数 1、NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息和图标对 应的窗口等内容。其定义为: typedef struct _NOTIFYICONDATA { DWORD cbSize; //以字节为单位的这个结构的大小 HWND hWnd; //接收托盘图标通知消息的窗口句柄 UINT uID; //应用程序定义的该图标的ID号 UINT uFlags; //设置该图标的属性 UINT uCallbackMessage; //应用程序定义的消息ID号,此消息传递给hWnd HICON hIcon; //图标的句柄 char szTip[64]; //鼠标停留在图标上显示的提示信息 } NOTIFYICONDATA, PNOTIFYICONDATA; 该结构中,成员uFlags可以是下列的组合或其中之一:

NIF_ICON:设置成员hIcon有效 NIF_MESSAGE:设置成员uCallbackMessage有效 NIF_TIP:设置成员szTip有效 2、全局函数Shell_NotifyIcon()用于在托盘上增加、删除或修改图标。其原型为: WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA pnid); Pnid是上面的NOTIFYICONDATA结构的指针。 dwMessage是被传递的消息,可以是以下消息之一: NIM_ADD:增加图标 NIM_DELETE:删除图标 NIM_MODIFY:修改图标 三、如何实现 1、在CYourDlg.cpp文件中定义一个变量NOTIFYICONDATA m_nid; 2、在CYourDlg.h文件中定义宏#define WM_SHOWTASK WM_USER+1 3、在CYourDlg::OnInitDialog()函数中添加以下代码,这样程序一启动,就在托盘中显示出了自己应用程序的图标。 //---------------------------托盘显示---------------------------------// m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); m_nid.hWnd = this->m_hWnd; m_nid.uID = IDR_MAINFRAME; m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ; m_nid.uCallbackMessage = WM_SHOWTASK; // 自定义的消息名称 m_nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); strcpy(m_nid.szTip, "服务器程序"); // 信息提示条为"服务器程序" Shell_NotifyIcon(NIM_ADD, &m_nid); // 在托盘区添加图标 4、在CYourDlg.h文件中声明消息函数原型

计算机二级考试《VB》模拟试题及答案

计算机二级考试《VB》模拟试题及答案 2016计算机二级考试《VB》模拟试题及答案 一、基本操作题 (1)在名称为Forml、标题为“球类项目”且没有最大化和最小化按钮的窗体上画1个名称为Combol的组合框。组合框中的文本内容为空,表项内容有“乒乓球”、“羽毛球”和“网球”3项。运行后的窗体如图所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjtl.vbp,窗体文件名为sjtl.frm。 (2)在名称为Forml、标题为“转换”的窗体上,画1个名称为Shapel、边框宽度为3的形状。再画两个标题分别为“椭圆”和“圆”的命令按钮。如下图所示。 要求:编写适当的事件过程,使得单击“椭圆”按钮时,Shapel 的形状变换为椭圆;单击“圆”按钮时,Shapel的形状变换为圆。程序中不得使用变量,每个事件过程中只能写一条语句。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjr2.vbp,窗体文件名为sjr2.frm。 二、简单应用题 (1)在考生文件夹下有一个工程文件sjt3.vbp。窗体Forml上有两个标题分别是“读数据”和“查找”的命令按钮。请画1个名称为Textl、初始值为空的文本框,该文本框允许显示多行内容,且有垂直滚动条,如图所示。程序功能如下。 ①在考生文件夹下的in.3.dat文件中存有100个正整数。单击“读数据”按钮,则将文件in3.dat中的数据读入数组a中。 ②单击“查找”按钮,则查找数组a中所有为7的倍数的数据,并将这些数据顺次显示在Textl文本框内(数据之间用空格隔开)。

“读数据”按钮的Click事件过程已经给出,请编写程序完成“查找”按钮的Click事件过程,实现上述功能。 注意:考生不得修改窗体文件中已经存在的控件和程序,在结束程序运行之前,必须使用“查找”按钮完成查找过程,且必须用窗 体右上角的关闭按钮结束程序,否则无成绩。最后将程序按原文件 名存盘。 (2)考生文件夹下有一个工程文件sit4.vbp。在窗体Forml上有 两个名称为Commandl和Command2、标题分别为“重输”和“查找”的命令按钮。程序功能如下。 单击“重输”按钮,则清空Textl中的`内容,等待用户输入由 空格隔开的若干个英文单词;单击“查找”按钮,则找出Textl中最 长的单词,并将其显示在Text2中。某一次的运行效果如图所示。 请将“查找”按钮的Click事件过程中的注释符去掉,把?改为正确 内容,以实现上述程序功能。 注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。 三、综合应用题 考生文件夹下有一个工程文件sjt.s.vbp。在窗体Forml上有两 个标题分别是“产生数据”和“重新排列”的命令按钮,有两个标 题为“原始数据”和“排列数据”的标签。程序功能如下。 ①单击“产生数据”按钮,则随机产生20个一位整数,存人数 组a中,并同时显示在Textl中。 ②单击“重新排列”按钮,则重新排列数组a中的元素:使等值的元素相邻存放,并且保持它们在数组a中首次出现的相对次序;最 后将排列结果显示在Text2中。某一次运行结果如图所示。 请将“重新排列”按钮的Click事件过程中的注释符去掉,把“?”改为正确内容,以实现上述程序功能。

常用窗体控件

常用窗体控件: String str=””; Foreach(Control item in this.Controls) { If(https://www.sodocs.net/doc/6a2371264.html,.IndexOf(“checkBox”)>0) { CheckBox ck=(CheckBox)Item; If(ck.Checked) { Str=ck.Text+”,”; } } }

高级窗体控件: 1.菜单控件MenuStrip 使用步骤: ①在Windows窗体中添加一个MenuStrip控件 ②单击该控件的Items属性,弹出“项集合编辑器”对话框 ③可以添加MenuItem子项。子项的子菜单 选择其“MenuItem”选项,单击其 DropDownItems属性,弹出相接对话框 ①选中要添加右键功能的Form或者控件,打开控件的设计页面 ②从工具箱中找到ContextMenuStrip控件,将这个控件拖曳到Form或者控件的设计页 面上。这时系统就会在这个页面下面自动创建一个contextMenuStrip1控件,如果你想在这个页面添加多个菜单,那么你也可以拖曳多个这种控件到设计页面上。 ③按照你的要求将这些ContextMenuStrip控件改成你需要的名称。然后, 选择需要右 键弹出菜单的页面,比如你当前编辑的页面中有一个DataGrid,一个T reeList,而你想分别为这两个控件添加不同的右键菜单。那么你就可以先选择DataGrid控件,然后在这个控件的属性中找到ContextMenuStrip属性,点击该属性,系统会自动查找你拖曳到当前页面的所有ContextMenuStrip控件并将这些控件罗列在这个属性的下拉菜单中。你可以选择一个你预先定义好的ContextMenuStrip控件。这样就为这个DataGrid控件设置了右键菜单。其他控件也使用同样的方法添加。 ④定义你的菜单,在为控件分配完菜单之后,你就可以定义单个的菜单。这时你可以 选中一个ContextMenu控件。系统会自动在编辑页面的上面现一个可编辑的动态菜

VB6.0实现窗体最小化时到系统托盘区

VB6.0将窗体最小化到系统托盘区 使用说明:共有两个方法,经个人实际测试(环境:xpsp3 vb6.0)第二个控件法最有效果,第一个方法在启动时确实在右下角,但是弹出后再次最小化就跑到屏幕左下角了,无法最小化,不知道是啥原因,希望大家改进代码。本人力荐第二种小巧有效简单的方法。 ---------------------------------------------------------------------------------------------------- 方法一 托盘,亦即程序最小化后程序图标隐藏到屏幕右下角的任务栏里。这种最小化方法比普通的最小化节约空间,因此备受欢迎,很多软件都具有这样的功能。在VB中,可用API 函数来实现托盘功能,但比较复杂,不太好操作。 相对而言采用一种非常简单易行的方法:控件法,才是最适合最方便的。下面要使用已被微软封装好的控件:csystray1(名称可自定)。 说到控件,大家可能要皱眉头了:去哪找呀?放心!这个控件就躺在你的VB安装盘里(目录为:COMMON\TOOLS\VB\UNSUPPRT\SYSTRAY)!不过,得处理一下:请在Tool 文件夹里查找一个名叫Systray的目录,将它拷贝到硬盘,用VB打开该目录下的工程,必要的话可作些改进(如更换图标、添加功能等),然后编译成ocx控件,可以随意命名。为方便使用起见,最好编译到Windows\System目录下。好了,现在我们就可以在我们的程序中使用此控件来轻松实现托盘功能了。vb中添加控件的方法就不用我说了吧? ---------------------------------------------------------------------------------------------------------- 控件的属性和事件浅析: 该控件的InTray属性是用来设置是否显示在托盘中,True为显示在托盘,False为不显示; 该控件的TrayIcon属性是在托盘中显示的图标式样; 该控件的TrayTip属性是鼠标移动到该控件上面时,显示的提示文字; 该控件的重要事件是几个我们常用的鼠标事件:按下、放开、移动、双击,编程时就是利用这些事件达到在任务栏中控制程序的目的。 ------------------------------------------------------------------------------------------------------- 源代码如下: '使程序最小化时显示到系统托盘 Private Sub Form_Resize() If Me.WindowState = 1 Then '如程序为最小化则—— cSysTray1.InTray = True '隐藏到任务栏 Me.Visible = False '让程序界面不可见 End If End Sub '点击托盘图标后,让程序窗体显示出来 Private Sub CsysTray1_MouseDown(Button As Integer, Id As Long) Me.WindowState = 0 '程序回复到Normal状态 Me.Visible = True '从任务栏中清除图标 cSysTray1.InTray = False '令程序界面可见

用VB6.0实现将窗体最小化到系统托盘区

用VB6.0实现将窗体最小化到系统托盘区 使用说明:共有两个方法,经个人实际测试(环境:xpsp3 vb6.0)第二个控件法最有效果,第一个方法在启动时确实在右下角,但是弹出后再次最小化就跑到屏幕左下角了,无法最小化,不知道是啥原因,希望大家改进代码。本人力荐第二种小巧有效简单的方法。 方法一 托盘,亦即程序最小化后程序图标隐藏到屏幕右下角的任务栏里。这种最小化方法比普通的最小化节约空间,因此备受欢迎,很多软件都具有这样的功能。在VB中,可用API 函数来实现托盘功能,但比较复杂,不太好操作。 相对而言采用一种非常简单易行的方法:控件法,才是最适合最方便的。下面要使用已被微软封装好的控件:csystray1(名称可自定)。 说到控件,大家可能要皱眉头了:去哪找呀?放心!这个控件就躺在你的VB安装盘里(目录为:COMMON\TOOLS\VB\UNSUPPRT\SYSTRAY)!不过,得处理一下:请在Tool 文件夹里查找一个名叫Systray的目录,将它拷贝到硬盘,用VB打开该目录下的工程,必要的话可作些改进(如更换图标、添加功能等),然后编译成ocx控件,可以随意命名。为方便使用起见,最好编译到Windows\System目录下。好了,现在我们就可以在我们的程序中使用此控件来轻松实现托盘功能了。vb中添加控件的方法就不用我说了吧? 控件的属性和事件浅析: 该控件的InTray属性是用来设置是否显示在托盘中,True为显示在托盘,False为不显示; 该控件的TrayIcon属性是在托盘中显示的图标式样; 该控件的TrayTip属性是鼠标移动到该控件上面时,显示的提示文字; 该控件的重要事件是几个我们常用的鼠标事件:按下、放开、移动、双击,编程时就是利用这些事件达到在任务栏中控制程序的目的。 源代码如下: '使程序最小化时显示到系统托盘 Private Sub Form_Resize() If Me.WindowState = 1 Then '如程序为最小化则—— cSysTray1.InTray = True '隐藏到任务栏 Me.Visible = False '让程序界面不可见 End If End Sub '点击托盘图标后,让程序窗体显示出来 Private Sub CsysTray1_MouseDown(Button As Integer, Id As Long) Me.WindowState = 0 '程序回复到Normal状态 Me.Visible = True '从任务栏中清除图标 cSysTray1.InTray = False '令程序界面可见 Me.setfocus End Sub

C# WinForm窗体及其控件的自适应

C# WinForm窗体及其控件的自适应 C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化。为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.根据窗体变化了的大小,成比例地实现其控件的水平和垂直方向的变化,也就是自适应。 二。使用方法 使用方法很简单, 1.把自适应的类整体复制到你的工程命名空间里, 然后在需要自适应的窗体中做3步即可: 2.声明自适应类实例。 3.为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件初始位置和大小 4.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 三。完整代码如下: (一)。自适应窗体的代码: using System; using System.Collections.Generic;

using https://www.sodocs.net/doc/6a2371264.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { //1.声明自适应类实例 AutoSizeFormClass asc = new AutoSizeFormClass(); public Form1() { InitializeComponent(); } //2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小 private void Form1_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); } //3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 private void Form1_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }

c最小化托盘

(一)原理 程序实现:最小化时隐藏至托盘,双击显示窗口,右键弹出快捷菜单“退出”并添加了响应函数。 1、托盘化的原理:首先要将窗口隐藏,然后在右下角托盘中绘制图标。 2、恢复的原理:将窗口显示,再将托盘中的图片删除。 (二)总体程序实现 1、首先建立一个基于对话框的MFC程序"CTrayDlg"。 然后在TrayDlg.h文件里加入自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER + 0x100)//一般数值大于 100//{{AFX_MSG(CTrayDlg) afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAMlParam);//}}AFX_MSG DECLARE_MESSAGE_MAP() 2、在TrayDlg.cpp文件里加入如下代码: BEGIN_MESSAGE_MAP(CTrayDlg, CDialog) //{{AFX_MSG_MAP(CTrayDlg) 中间加入消息声明: ON_MESSAGE(WM_SHOWTASK,OnShowTask) //}}AFX_MSG_MAP END_MESSAGE_MAP() 3、在CTrayDlg的::OnSysCommand(UINT nID, LPARAM lParam)函数体中增加一个命令响应:

if(nID==SC_MINIMIZE) ToTray();//最小化到托盘的函数 (三)具体函数内容 1、最小化到托盘函数 TrayDlg.h中添加函数声明: voidToTray(); TrayDlg.cpp中定义函数体: voidCTrayDlg::ToTray() { NOTIFYICONDATAnid; //NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息, //它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。 nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//以字节为单位的这个结构的大小 nid.hWnd=this->m_hWnd;//接收托盘图标通知消息的窗口句柄 nid.uID=IDR_MAINFRAME;//应用程序定义的该图标的ID号 nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;//设置该图标的属性 nid.uCallbackMessage=WM_SHOWTASK;//应用程序定义的消息ID号,此消息传递给hWnd nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRA ME));//图标的句柄 strcpy(nid.szTip,"我的托盘我作主");//鼠标停留在图标上显示的提示信息Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标de函数,函数说明见文章附录

VB学习总结

1.2.1 VB简介 VB:Visual Basic BASIC:Beginner’s All-Purpose Symbolic Instruction Code BASIC语言是专门为初学者设计的计算机语言,于1964年问世。最初只有十几条语句,由于简单易学而受到了用户的欢迎,很快就应用于各个领域。随着计算机科学技术的发展,计算机厂商在原有的基础上不断的添加新的功能,进行扩展强化,各种BASIC版本应运而生,使它成为最常用的计算机程序设计语言。 1987年Microsoft公司开发了Quick BASIC,它克服了原有BASIC结构化差和运算速度慢的缺点,并且在功能上大为扩展,具有编辑、运行和调试的集成环境。Quick BASIC兼容以前的传统BASIC。 VB是Microsoft公司在Quick BASIC的基础上为开发Windows应用程序而提供的强有力的开发环境和工具,是具有很好的图形用户界面(Graphic User Interface,简称GUI)的程序设计语言。它采用面向对象和事件驱动的程序设计两种新机制,把过程化和结构化编程集合在一起。正是由于它在应用程序开发中的图形化构思,使得开发者能非常容易地创建一个窗口(在VB中称为窗体—Form),然后从VB工具箱选择控件放在窗体内,无需编写程序。就如同目前盖房子所用的门、窗、水泥、钢筋、砖等,都是现成的材料,只要到建筑现场组合就可以了。用VB设计程序就好比现代的建筑师采用现代科技的产品,而用传统DOS (Disk Operating System)下的BASIC的就如同早先的工匠,一砖、一瓦、一木都要自己动手。 Visual Basic for Windows是一种具有良好图形用户界面(GUI)的程序设计语言,同时又是一种完全支持面向对象程序设计的语言。 Visual是指开发图形用户界面(GUI)的方法,不需要编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象拖放到窗体上即可。这种直观的编程方法,也叫做可视化编程。Visual的意思是“视觉的”或“可视的”,也就是直观的编程方法。就像使用“画图”之类的绘图程序,通过选择画图工具来画图一样。 Basic是指BASIC语言,之所以叫做“Visual Basic”就是因为它使用了BASIC语言作为代码。VB在原有BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关 键词,其中很多与Windows GUI有直接关系。 1.2.2 VB的发展过程 1991年:为了简化Windows应用程序的开发,Microsoft公司推出了Visual Basic 1.0。 1992年:Microsoft公司推出了Visual Basic 2.0。 1993年:Microsoft公司推出了Visual Basic 3.0。 1995年:随着Windows95的发布,Visual Basic 4.0也随之推出。 1997年:Microsoft公司开始推出Windows开发工具套件Microsoft Visual Studio 1.0,其中包括了Visual Basic 5.0。

winform窗体和控件自适应

有时winform窗体的大小会改变,此时窗体上的控件会很混乱,如何可以使控件自适应窗体呢?以 下就是方法: 1、首先在自己的命名空间里先建一个Autosize.cs类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace 自己的命名空间 { class Autosize { public void setTag(Control cons) { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) setTag(con); } } string[] mytag; public void setControls(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { if (con.Tag != null) { mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy); }

vb将程序最小化到托盘

Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long Public Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hicon As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Any) As Long Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long Public Type POINTAPI x As Long y As Long End Type Public Type NOTIFYICONDATA cbSize As Long '结构的长度 hwnd As Long '消息接收窗口的句柄 uID As Long '图标的标识 uFlags As Long '设置参数 uCallbackMessage As Long '回调消息的值 hicon As Long '图标句柄 szTip As String * 64 '提示字符串 End Type Public Const NIM_ADD = 0 '添加图标 Public Const NIM_MODIFY = 1 '修改图标 Public Const NIM_DELETE = 2 '删除图标 Public Const NIF_MESSAGE = 1 '当有鼠标事件发生时产生消息 Public Const NIF_ICON = 2 ' Public Const NIF_TIP = 4 '图标有提示字符串

vb实现托盘(含程序)

VB托盘 我按照下面的方法建了一个VB程序,可是在我自己的电脑上可以托盘,但换了电脑在别人的电脑上运行就没有托盘了,怎么回事啊! 1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False 2、菜单:工程--添加模块按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas 3、在Module1中写下如下代码: Option Explicit Public Const MAX_TOOLTIP As Integer = 64 Public Const NIF_ICON = &H2 Public Const NIF_MESSAGE = &H1 Public Const NIF_TIP = &H4 Public Const NIM_ADD = &H0 Public Const NIM_DELETE = &H2 Public Const WM_MOUSEMOVE = &H200 Public Const WM_LBUTTONDOWN = &H201 Public Const WM_LBUTTONUP = &H202 Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_RBUTTONDOWN = &H204 Public Const WM_RBUTTONUP = &H205 Public Const WM_RBUTTONDBLCLK = &H206 Public Const SW_RESTORE = 9 Public Const SW_HIDE = 0 Public nfIconData As NOTIFYICONDATA Public Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * MAX_TOOLTIP End Type Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

相关主题