|
I have problems with the message handler of a system tray icon. I am writing an SDI application, and it adds the icon with no problems, but my custom message handler does not get the messages sent to the icon.
I have successfully done this in a Dialog App some years ago, and now it does not work in the SDI one. I try to move this functionallity to the App, View, Frame classes - but nothing happens. I use VC++ 6.0 under Windows XP.
Are there any catches here? What do I do wrong???
Really appreciate the help.
"Needless redundancy is the hobgoblin of software engineering." - Peter Darnell
|
|
|
|
|
All you need to do is create your own message MY_MSG (or something like that), then attach this message to the callbackmsg (of the trayicon), then place the message in the message map of your mainframe and implement the function you attached to the message.
|
|
|
|
|
I'v made a well working fct. for this:
inline const bool SetTrayIcon(
CWnd *pWnd,
CONST DWORD dwMessage,
CONST DWORD dwMessage_NIM,
CONST UINT uId_Icon,
LPCTSTR lpszTTT,
CONST UINT uId_Callback)
// In the tray, show specific icon. Return T on succes and F if not.
//
// To add the icon use: NIM_ADD for NIM msg.
// To change the icon use: NIM_MODIFY for NIM msg.
// To remove the icon use: NIM_ADD for NIM msg.
//
{
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = pWnd->GetSafeHwnd();
nid.uID = uId_Callback;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = dwMessage;
nid.hIcon = (HICON)::AfxGetApp()->LoadIcon(uId_Icon);
::lstrcpyn(nid.szTip, lpszTTT, sizeof(nid.szTip));
bool bResult = (::Shell_NotifyIcon(dwMessage_NIM, &nid) != 0);
if(nid.hIcon)
::DestroyIcon(nid.hIcon);
return bResult;
}
And then you go:
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
// Callback handler for tray icon.
ON_MESSAGE(WM_NOTIFYICON, OnTrayIconNotification)
END_MESSAGE_MAP()
And:
LRESULT CCalFrameWnd::OnTrayIconNotification(WPARAM, LPARAM lParam)
// Called back on notifications to the tray icon.
{
switch(lParam)
{
case WM_LBUTTONDBLCLK:
{
// Do stuff.
break;
}
case WM_LBUTTONDOWN:
{
// Do stuff.
break;
}
case WM_RBUTTONDOWN:
{
// Do stuff.
break;
}
// etc.
}
return 0L;
}
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
...I forgot some examples:
// Setup tray icon.
::SetTrayIcon(this, WM_NOTIFYICON, NIM_ADD, m_uId_TrayIconActive, (LPCTSTR)GetBaloonInfo());
// Refresh baloon for tray icon.
::SetTrayIcon(this, WM_NOTIFYICON, NIM_MODIFY, m_uId_TrayIconActive, (LPCTSTR)GetBaloonInfo());
// Remove tray icon.
::SetTrayIcon(this, WM_NOTIFYICON, NIM_DELETE, m_uId_TrayIconActive);
And you have:
inline const bool
SetTrayIcon(
CWnd*,
CONST DWORD,
CONST DWORD,
CONST UINT,
LPCTSTR lpszTTTEx = _T(""),
CONST UINT uId_CallbackEx = 0);
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
Hai...
I need a Grid whcih should work like ExcelSheet..i.e at run time we should be able to add comments to text in a cell,sholud be able to insert a horizontal line in a cell...can anybody help me regarding this???
ThomasKennedyBose
|
|
|
|
|
This Code Project Grid[^] should give you a good starting point.
Michael
'War is at best barbarism...Its glory is all moonshine. It is only those who have neither fired a shot nor heard the shrieks and groans of the wounded who cry aloud for blood, more vengeance, more desolation. War is hell.' - General William Sherman, 1879
|
|
|
|
|
yup.....thnxs...but it doesn't work like a Excel sheet right??(with this v can't add a comment for cell !)plz gimme more useful stuff
ThomasKennedyBose
|
|
|
|
|
Help yourself
It's an extensive, capable grid, and it's free. Don't expect it to be an excelsheet-plug-and-play-replacement.
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
........................
ThomasKennedyBose
|
|
|
|
|
Like I said, it's a starting point. It is probably the best free grid code available. If you want more done for you, then you'll probably need to pay money.
It shouldn't be hard to add the cell commenting code to the grid source.
Michael
'War is at best barbarism...Its glory is all moonshine. It is only those who have neither fired a shot nor heard the shrieks and groans of the wounded who cry aloud for blood, more vengeance, more desolation. War is hell.' - General William Sherman, 1879
|
|
|
|
|
well.. i wanted to put Chris Maunders Grid Ctrl with some Additions (some CellFormats) in a static lib.. everything works & compiles fine in debug mode..
but in release mode it always says:
<br />
Class.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CGridBtnCell::classCGridBtnCell" (?classCGridBtnCell@CGridBtnCell@@2UCRuntimeClass@@B)<br />
is there any possibility to turn the mfc runtime thingies on/off?
thanks in advance,
bernhard
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
Make sure you compile both lib and application with "RTTI enabled" (Project Settings, C++, C++ Language)
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
well.. i've checked this, rebuilded everything.. and it still doesn't work..
the msdn says that this runtime - shista has got nothing to do with the c++ rtti, they made their own runtime - information (from cobject).. is there any way to disable / enable the mfc runtime - information?
thanks in advance...
(first of all i thought that your sig is "krieger" from fanta4.. yaya.. sts is a little bit different )
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
:slaps forehead: Yep, sure, CRuntimeClass is the MFC version...
ugh, not much of ideas then
I guess the grid is relying on that.... check the MFC settings for the release build (static/dynamic). MSDN says:
Static linking to MFC is supported only in Visual C++ Professional and Enterprise Editions. For more information, seeVisual C++ Editions.
There seem to be quite some differences how MFC handles their own RTTI, depending on linking statically/dynamically to MSDN (and make sure the VCRT settings match those for MFC)
Bernhard wrote:
sts is a little bit different
A little bit, yes
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
good luck in linking to the msdn.
[okay.. just a little joke.. hope this doesn't make you mad.. don't wanna be undankbar]
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
Now I have another question, could you help me?
The problem is:
How can I program to carry out a Sequential-Verify test on floppy disk in VC?
Thank you all very much!
LeonOrient
|
|
|
|
|
have anyone ever used his asssociated librairies like dbgeng.h ?
I am actually having pb with some function so if anyone knows about it plz tell me.
I am developping a plug-in using the debugger.
Thx
|
|
|
|
|
I know little about writing multithreaded program. But I'm gonna write an image viewer like ACDSee using MFC. ACDSee uses multi-thread when it loads image files in the broser mode. What kind of thread do you think I'd better use in the browser mode? Worker thread? or UI thread? Give me an advice about it and if you know it, tell me why. Thank you.
|
|
|
|
|
How can I get Character Width in GDI+?
In GDI, I used GetTextExtentExPoint(), I've got correct Displaysize - Width, Height;
But in GDI+, I never found the function or other things like GetTextExtentExPoint();
My first aim is to get display text width and show caret at end of the that.
In GDI, I had no problem in displaying caret at right place.
Could anyone give me an answer about this?
thanks in advance;(-:
|
|
|
|
|
Hi all
How can I get the url of the link when I click on the CHtmlView?
|
|
|
|
|
|
What I mean is, I need to know the new url when a new window is opened (click on "Open in New Window" context-menu item)
|
|
|
|
|
I've given this much thought and have decided that I will replace PHP/Perl/ASP with C++ on websites I design in the future...not just because of speed, but because there are times when so much blood, sweat and tears go into code...you don't much feel like sharing with anyone...so compiled exe's seem to me the way to go under some circumstances.
Anyways...I'd like to find a library and some wicked tutorials on how to get started.
I have a background in C++ and web development already so I don't need beginners tutorials...I know what CGI is and care little about server setup...I really just wanna see some cool examples of C++ CGI's using existing libs...I can't seem to find anything...
Thanks
"Two wrongs don't make a right, but three lefts do!" - Alex Barylski
|
|
|
|
|
We have a C++ based web development application server that sounds exactly like what you are looking for. If you are interested, shoot me an email.
|
|
|
|
|
I would like to be able to put a splitter control within a view and put other views on each side of the splitter control. Basically I am trying to get nested splitter windows without having to have all of the splitter windows attached to the main frame window. Is there any way to do this?
Cheers,
Clint Singer
|
|
|
|