From: Todd C. <tc...@gm...> - 2004-05-31 16:38:16
|
Hello, I'm trying to create a balloon tooltip in the systray (see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp for an example). I have the Win32::API call to Shell_NotifyIconA down, but I'm having problems with Win32::API::Struct getting the NOTIFYICONDATA structure to work properly. Here's the structure: typedef struct _NOTIFYICONDATA { DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; HICON hIcon; TCHAR szTip[64]; DWORD dwState; DWORD dwStateMask; TCHAR szInfo[256]; union { UINT uTimeout; UINT uVersion; }; TCHAR szInfoTitle[64]; DWORD dwInfoFlags; GUID guidItem; } NOTIFYICONDATA, *PNOTIFYICONDATA; Can anybody recommend how to pack() this? I've tried Win32::GUI::NotifyIcon, but it's has limitations and does not allow me to set all of the items in the structure for the balloon tooltip to work. I've also tried Convert::Binary::C with no luck. Maybe I should attempt to write an XS module for this functionality? Thanks in advance for your assistance! :) |
From: Glenn L. <pe...@ne...> - 2004-05-31 19:09:46
|
On approximately 5/31/2004 9:38 AM, came the following characters from the keyboard of Todd Colton: > Hello, > > I'm trying to create a balloon tooltip in the systray (see > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp > for an example). I have the Win32::API call to Shell_NotifyIconA down, > but I'm having problems with Win32::API::Struct getting the > NOTIFYICONDATA structure to work properly. Here's the structure: > > typedef struct _NOTIFYICONDATA { > DWORD cbSize; > HWND hWnd; > UINT uID; > UINT uFlags; > UINT uCallbackMessage; > HICON hIcon; > TCHAR szTip[64]; > DWORD dwState; > DWORD dwStateMask; > TCHAR szInfo[256]; > union { > UINT uTimeout; > UINT uVersion; > }; > TCHAR szInfoTitle[64]; > DWORD dwInfoFlags; > GUID guidItem; > } NOTIFYICONDATA, *PNOTIFYICONDATA; > > Can anybody recommend how to pack() this? I've tried > Win32::GUI::NotifyIcon, but it's has limitations and does not allow me > to set all of the items in the structure for the balloon tooltip to > work. I've also tried Convert::Binary::C with no luck. Maybe I should > attempt to write an XS module for this functionality? > > Thanks in advance for your assistance! :) Consider enhancing Win32::GUI::NotifyIcon to add balloon tooltip support instead? -- Glenn -- http://nevcal.com/ =========================== The best part about procrastination is that you are never bored, because you have all kinds of things that you should be doing. |
From: Todd C. <tc...@gm...> - 2004-05-31 20:52:51
|
On Mon, 31 May 2004 12:11:03 -0700, Glenn Linderman <pe...@ne...> wrote: > > Consider enhancing Win32::GUI::NotifyIcon to add balloon tooltip support > instead? > I've tried that already with no luck (never have touched or seen any XS code before). I'll start reading up on XS and will study the Win32::GUI source code a bit more and maybe I'll manage to come up with something. Thank you for your reply! |
From: Glenn L. <pe...@ne...> - 2004-05-31 21:08:19
|
On approximately 5/31/2004 1:52 PM, came the following characters from the keyboard of Todd Colton: > On Mon, 31 May 2004 12:11:03 -0700, Glenn Linderman <pe...@ne...> wrote: > >>Consider enhancing Win32::GUI::NotifyIcon to add balloon tooltip support >>instead? > > I've tried that already with no luck (never have touched or seen any > XS code before). I'll start reading up on XS and will study the > Win32::GUI source code a bit more and maybe I'll manage to come up > with something. Thank you for your reply! Well, yes, you mentioned the possibility of writing XS code, and if you are going to write it, you might as well write it inside Win32::GUI rather than a separate package, since it already supports NotifyIcons. You might also consider submitting a bug track request at the Win32::GUI project on SourceForge, mentioning that balloon tooltips aren't supported, and then even if you never write code (1) people will be able to tell (2) maybe someone else will write the code someday. -- Glenn -- http://nevcal.com/ =========================== The best part about procrastination is that you are never bored, because you have all kinds of things that you should be doing. |
From: Todd C. <tc...@gm...> - 2004-05-31 22:24:03
|
On Mon, 31 May 2004 14:10:04 -0700, Glenn Linderman <pe...@ne...> wrote: > > Well, yes, you mentioned the possibility of writing XS code, and if you > are going to write it, you might as well write it inside Win32::GUI > rather than a separate package, since it already supports NotifyIcons. > > You might also consider submitting a bug track request at the Win32::GUI > project on SourceForge, mentioning that balloon tooltips aren't > supported, and then even if you never write code (1) people will be > able to tell (2) maybe someone else will write the code someday. > I'm not sure what I was looking at earlier, but I was able to figure it out pretty quick this time around. Only having one problem getting the uTimeout to work, but I'll continue to poke around and will hopefully figure it out. Once I get it going, I'll be sure to submit a patch to the developers. |
From: Laurent R. <ro...@cl...> - 2004-06-01 18:24:04
|
Hi, Actually, Balloon tooltip it's not supported for NotifyIcon because MinGW header aren't ready ;o) In MingW only first version of NOTIFYICONDATA struct is defined. Laurent. > > > > Well, yes, you mentioned the possibility of writing XS code, and if you > > are going to write it, you might as well write it inside Win32::GUI > > rather than a separate package, since it already supports NotifyIcons. > > > > You might also consider submitting a bug track request at the Win32::GUI > > project on SourceForge, mentioning that balloon tooltips aren't > > supported, and then even if you never write code (1) people will be > > able to tell (2) maybe someone else will write the code someday. > > > > I'm not sure what I was looking at earlier, but I was able to figure > it out pretty quick this time around. Only having one problem getting > the uTimeout to work, but I'll continue to poke around and will > hopefully figure it out. Once I get it going, I'll be sure to submit a > patch to the developers. > |
From: Todd C. <tc...@gm...> - 2004-06-01 19:54:15
|
On Tue, 1 Jun 2004 20:15:40 +0200, Laurent ROCHER <ro...@cl...> wrote: > > Hi, > > Actually, Balloon tooltip it's not supported for NotifyIcon because > MinGW header aren't ready ;o) > > In MingW only first version of NOTIFYICONDATA struct is defined. > > Laurent. Hi Laurent! I was actually able to get it working adding a few lines of code to lastest version of GUI_Options.cpp from CVS. I'd show you a diff, but unfortunately I'm having problems with sourceforge's CVS server at this moment. Below are the lines I've added to ParseNotifyIconOptions. Only thing not working us the uTimeout setting... not sure if it has to be handled different since it's part of a union... this is my first attempt playing with XS and c++ code, so please go easy on me. I know there probably should be additional code ensuring that each argument is valid based on the windows version it's running on, which is way over my head right now. Use this code at your own risk! ;) } else if(strcmp(option, "-balloon_body") == 0) { next_i = i + 1; strcpy(nid->szInfo, SvPV_nolen(ST(next_i))); SwitchBit(nid->uFlags, NIF_INFO, 1); } else if(strcmp(option, "-balloon_header") == 0) { next_i = i + 1; strcpy(nid->szInfoTitle, SvPV_nolen(ST(next_i))); } else if(strcmp(option, "-balloon_timeout") == 0) { next_i = i + 1; nid->uTimeout = (UINT) SvIV(ST(next_i)); } else if(strcmp(option, "-balloon_icon") == 0) { next_i = i + 1; if(strcmp(SvPV_nolen(ST(next_i)), "error") == 0) { nid->dwInfoFlags = NIIF_ERROR; } else if(strcmp(SvPV_nolen(ST(next_i)), "info") == 0) { nid->dwInfoFlags = NIIF_INFO; } else if(strcmp(SvPV_nolen(ST(next_i)), "warning") == 0) { nid->dwInfoFlags = NIIF_WARNING; } else if(strcmp(SvPV_nolen(ST(next_i)), "none") == 0) { nid->dwInfoFlags = NIIF_NONE; } else { if(PL_dowarn) warn("Win32::GUI: Invalid value for -balloon_icon!"); } |