Click here to Skip to main content
15,879,535 members
Articles / Programming Languages / C++

Image Tip - A popup thumbnail shell extension

Rate me:
Please Sign up or sign in to vote.
3.89/5 (10 votes)
8 Mar 20043 min read 91.8K   2.4K   33  
A graphical tooltip to show the contents of jpgs, bmps etc
// Image_Tip.cpp : Implementation of CImage_Tip
#include "stdafx.h"
#include "ImageTip.h"
#include "Image_Tip.h"

#include "GraphicTip.h"

/////////////////////////////////////////////////////////////////////////////
// CImage_Tip


HRESULT CImage_Tip::Load ( LPCOLESTR wszFilename, DWORD dwMode )
{
	m_FileName = wszFilename;

//	wchar_t	buf [512];
//	wcscpy (buf, L"CImage_Tip::Load ( '");
//	wcscat (buf, wszFilename);
//	wcscat (buf, L"' )\n");
//	OutputDebugStringW (buf);
	
    return S_OK;
}
 
HRESULT CImage_Tip::GetInfoTip ( DWORD   dwFlags, LPWSTR* ppwszTip )
{
	static std::wstring	m_FileNameLast;

	// We're going to create our own tooltipesque window, but with a the CPreviewBitmap in it...
//	wchar_t	buf [512];
//	wcscpy (buf, L"CImage_Tip::GetInfoTip (). m_Filename = '");
//	wcscat (buf, m_FileName.c_str ());
//	wcscat (buf, L"' m_FileNameLast = '");
//	wcscat (buf, m_FileNameLast.c_str ());
//	wcscat (buf, L"'\n");
//	OutputDebugStringW (buf);

	// Return a blank tooltip.
	IMalloc *pMalloc;
	if ( FAILED( SHGetMalloc ( &pMalloc )))
		return E_FAIL;
	*ppwszTip = (LPWSTR) pMalloc->Alloc ( (1) * sizeof(wchar_t) );
	if ( NULL == *ppwszTip )
	{
		pMalloc->Release();
		return E_OUTOFMEMORY;
	}
	(*ppwszTip) [0] = 0;
	pMalloc->Release();

	// Make sure we haven't recently shown this item, otherwise Explorer will keep on trying...
	if (m_FileName.compare (m_FileNameLast))
		CGraphicTip::ShowTip (m_FileName);	// This is all that's needed here!

	m_FileNameLast.erase ();
	m_FileNameLast.append (m_FileName);
	
	return S_OK;
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Software Developer (Senior)
Sweden Sweden
I have now moved to Sweden for love, and recently married a lovely Swede.


-----------------
I started programming on BBC micros (6502) when I was six and never quite stopped even while I was supposed to be studying physics and uni.

I've been working for ~13 years writing software for machine control and data analysis. I now work on financial transaction transformation software, for a Software company in Gamlastan, Stockholm.
Look at my articles to see my excellent coding skills. I'm modest too!

Comments and Discussions