Windowsでシンボリックリンクを作成

どうやらWindowsでもシンボリックリンクが作成できるようです。Vista以降。

というのもScalaのベータ版を使ってみたいがためいちいち入れ替えるのもあれなので、うまくできないかなと探していたところ以下の記事を発見

http://blog.livedoor.jp/s_imai_jp/archives/51360129.html

C:\Program Files (x86)>path
PATH=...;C:\Program Files (x86)\scala\\bin
;C:\play-2.1.3;C:\Program Files\Java\jdk1.7.0_40\bin;...
C:\Program Files (x86)>scala -version
Scala code runner version 2.10.2 -- Copyright 2002-2013, LAMP/EPFL
C:\Program Files (x86)>mklink /d scala scala-2.11.0-M4
scala <> scala-2.11.0-M4 のシンボリック リンクが作成されました
C:\Program Files (x86)>scala -version
Scala code runner version 2.11.0-M4 -- Copyright 2002-2013, LAMP/EPFL

GDIでPNGを読み込む

GDIでは通常PNGファイルを読み込むことはできないらしい。

どうしても読み込む必要があったのでちょっと調べてみた

http://code.logos.com/blog/2008/09/displaying_a_splash_screen_with_c_part_i.html

このやり方でうまく読み込めるのだが、どうやらマシンによっては読み込みにFailする。一応XPSP3から使えるとなっているのだが。。。

仕方がないのでGDI+を用いました。

HBITMAP LoadImage( HINSTANCE hinst, LPCTSTR pszName, LPCTSTR pszType )
{
		HRSRC hRes = FindResource(hinst, pszName, pszType);
		DWORD Size = SizeofResource(hinst, hRes);
		HGLOBAL hData = LoadResource(hinst, hRes);
		const void *pData = LockResource(hData);
		HGLOBAL hBuffer = GlobalAlloc(GMEM_MOVEABLE, Size);
		void *pBuffer = GlobalLock(hBuffer);
		CopyMemory(pBuffer, pData, Size);
		GlobalUnlock(hBuffer);

		IStream *pStream;
		CreateStreamOnHGlobal(hBuffer, TRUE, &pStream) ;
	 IStream *pStream=CreateStreamOnResource(hinst,pszName,pszType);

		Gdiplus::Bitmap* pBitmap = Gdiplus::Bitmap::FromStream(pStream);
		pStream->Release();
		HBITMAP ret;
		pBitmap->GetHBITMAP(Color(0,0,0,0),&ret);
		delete pBitmap;
	return ret;
}