将窗口最小化为时钟旁的小图标(PowerBulider)

将窗口最小化为时钟旁的小图标

建立主窗口"w_main",口定义如下"Local External Fuctions":

function long LoadLibrary( ref string string ) LIBRARY "KERNEL32" Alias For LoadLibraryA

function long FreeLibrary( long long ) LIBRARY "KERNEL32" 

function boolean Shell_NotifyIcon( ulong long, ref s_str str ) LIBRARY "SHELL32" Alias FOR "Shell_NotifyIconA"

function long LoadIcon( long long, long long ) LIBRARY "USER32" Alias For LoadIconA

 

定义结构型变量:

s_str:

size

Unsignedlong

Hwnd

Long

Id

Unsignedlong

Flags

Unsignedlong

Callbackmessage

Unsignedlong

Icon

Long

tips[64]

Character

定义实例变量:

private:

s_str istr_icon

 

窗口最小化按钮Click事件写入如下Script:

string ls_resource

Long ll_handle

// 下三句为装入图标资源,notepad.exe即为写字板,exe执行时显示的图标内定为1

ls_resource = "notepad.exe"

ll_handle = loadlibrary ( ls_resource )

istr_icon.icon = loadicon ( ll_handle, 1 )

// 窗口回调事件号,pbm_custom01即为1024,02为1025,依此类推

istr_icon.callbackmessage = 1024

istr_icon.tips = "应用程序"

istr_icon.hwnd = handle ( parent )

istr_icon.size = 88

istr_icon.id = 1

// 标识值,即为显示tips 4, 显示icon 2, 激活窗口对应事件号

istr_icon.flags = 7

// 显示icon关键函数, 0为显示,1为修改,2为删除

shell_notifyicon ( 0, istr_icon )

parent.hide ( )

// 释放资源

freelibrary ( ll_handle )

 

为窗口创建用户定义事件ue_event,event id为pbm_custom01,为其写script:

m_popup lm_popup

Integer li_X, li_Y

choose case lparam

Case 513 // LButtonUp

// 删除图标

Shell_NotifyIcon( 2, istr_icon )

// 显示窗口

this.show ( )

CASE 517 // RButtonUp

li_X = This.X

li_Y = This.Y

// 移动到屏幕外以免show 时看到,你可关闭此句看什么效果

This.Move ( - This.Width - 10, - This.Height - 10 )

// 加这句才能看到菜单条(菜单条属于此windows)

This.Show ( )

lm_popup = CREATE m_popup

lm_popup.m_item.PopMenu ( PointerX ( ), PointerY ( ) )

// 恢复设置

This.Hide ( )

This.Move ( li_X, li_Y )

DESTROY lm_popup

end choose

其中,"m_popup"为最小化成TRAYICON图标时点击右键时弹出的菜单。

时间: 2024-08-03 04:02:38

将窗口最小化为时钟旁的小图标(PowerBulider)的相关文章

什么原因导致了窗口小图标变成乱码

  问:我在使用电脑时由于断电导致非正常关机,重启Windows XP后发现应用程序窗口上的最小化.最大化和关闭按钮小图标有的变成了1.2.3,有的被改成了是问号或者乱码.请问这是怎么回事,如何才能解决? 答:这是Windows XP的一个常见故障,产生该故障的原因是:非正常关机导致系统中显示在最小化.最大化和关闭按钮上的图示字库丢失或损坏.解决该问题的方法是到其他安装了相同操作系统的电脑上找到一个名为Marlett.ttf的字库文件并复制到自己电脑系统安装分区的文件夹中.另一个方式是重新启动操

VC 制作系统托盘程序实现将窗口最小化到系统托盘

VC 制作系统托盘程序实现将窗口最小化到系统托盘 2008年01月11日 星期五 10:24 前段时间因为要用到系统拖盘,所以研究了一下,在这里记录一下,免得以后忘了 ^_^先在类中定义一个结构变量NOTIFYICONDATA pnid;然后在OnInitDialog进行初始化    pnid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//该结构体大小    pnid.hWnd=m_hWnd;    //窗口句柄    pnid.uID=(UINT)m_hIcon

各种窗口最小化快捷键详解

  一.ALT+Esc 可以使当前窗口最小化. 二.Win+D 最小化所有窗口,再按一下就可以还原窗口. 三.Windows+M 最小化所有窗口 . 四.Windows+Shift+M 还原最小化的窗口. 五.Alt+空格+N 最小化当前窗口(和浏览器的最小化一样) 六.ALT+TAB 这个是切换窗口的按钮,切换到另外一个窗口,这个窗口自然也可以最小化.

关于在MFC中将窗口最小化到托盘实现原理及操作步骤_C 语言

步骤/方法 (一) 原理 1.最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标. 2.恢复的原理:将窗口显示,再将托盘中的图片删除. (二)程序实现 1.自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1) 2.在MFC的 ::OnSysCommand(UINT nID, LPARAM lParam) 函数体中增加一个命令响应 if(nID==SC_MINIMIZE) ToTray(); //最小化到托盘的函数 3.在消息映射中添加 ON_ME

dockablepane-mfc mdi窗口最小化状态恢复后没有自动刷新

问题描述 mfc mdi窗口最小化状态恢复后没有自动刷新 程序刚运行时的界面 最小化恢复以后界面 可能是垂直工具条加上以后导致的,之前好像没有这种情况 垂直工具条时用CDockablePane里面嵌一个CMFCToolbar做的,代码为 #include "stdafx.h" #include "ToolboxPane.h" #include "resource.h" CToolboxPane::CToolboxPane(void) { } CT

.net 主窗口最小化后屏幕区域出现影像错乱

问题描述 .net 主窗口最小化后屏幕区域出现影像错乱 用vb.net写了一个监控程序,在tablelayoutpanel 中加入了多个模块化的自定义控件,自定义控件带有timer定时刷新,平时最大化应用没出现过什么问题,但是当有其他窗口覆盖或者当该程序最小化之后,原来的自定义控件区域(此时该区域应该不存在焦点之类的问题)就会出现匪夷所思的影像错乱,若果点击该区域的图标位置也会出现失焦. 如图,此时监控程序最小化,同时打开我的文档(为当前活动窗口),黑块部分是原监控程序最大化时tablelayo

随同主窗口同时弹出的附加小窗口

随同主窗口同时弹出的附加小窗口 打开一个窗口时自动弹出一个附加的小窗口,表示新消息公告.重要提示信息.当然,如果如果你是在用一些网站提供的免费空间做主页的话,一般要设置这样一个小窗口加入空间提供者的一些连接消息,如现在网易就是这样做的,弹出的附加小窗口有各种形式,如没有工具栏的.没有滚动条的,其实制作并不难,这里,将有关方法全盘提供,你可以重新加载本页,或单击工具栏按钮"刷新",试一下,效果还不错吧!       点击一个链接新开一个窗口,而新开的窗口又与一般的浏览器窗口不同,看起来挺

C#窗口最小化后还原窗口时TableLayoutPanel画屏

问题描述 如题所示,C#窗口最小化后还原窗口时TableLayoutPanel里面所有的东西都花了盼望大神指点. 解决方案 解决方案二:自己顶一下,求大神指点解决方案三:控件放多了吧.导至刷不过来了.解决方案四:如图所示,就那么几个,不至于太多吧最下面那个表格还是另一个自定义空间呢解决方案五:什么花?是闪烁吗?http://www.cnblogs.com/wuhenke/archive/2012/09/26/2704081.html解决方案六:引用4楼ajianchina的回复: 什么花?是闪烁

关于窗口最小化后、还原的问题

问题描述 需求:我自己写的一个程序(暂且叫From1),来调用第三方程序(aaa.exe)第三方程序的主画面的某个button按下后会呼出一个popUp画面,此时主画面关闭,只剩下popUp画面.然后popUp画面上按下最小化按钮.此时,在任务栏上有个矩形的"图标按钮"(别理解错了,不是指托盘图标).问题:在我的程序上怎么实现,让这个第三方程序的popUp画面显示成最小化按钮按下前popUp画面显示的状态.这里有个神奇的现象,如果你按任务栏上的"图标按钮"进行最小化