Task icon in Windows

BlitzMax Forums/BlitzMax Programming/Task icon in Windows

Has anyone been able to set their program's task icon yet?
Import "-lshell32"

Extern
	Function LoadIcon%(hWnd%, file$z, index%) = "ExtractIconA@12"
End Extern

Extern "win32"
	Function GetActiveWindow%()
	Function GetDesktopWindow%()
	Function GetWindowRect%(hWnd%, lpRect:Byte Ptr)
	Function SetWindowPos%(hWnd%, after%, x%, y%, w%, h%, flags%)
	Function SetClassLong%(hWnd%, nIndex%, dwNewLong%) = "SetClassLongA@12"
End Extern

Type lpRECT
	Field l%, t%, r%, b%
End Type

Const GFX_WIDTH = 320, GFX_HEIGHT = 200, BIT_DEPTH = 0, HERTZ = -1
Graphics GFX_WIDTH, GFX_HEIGHT, BIT_DEPTH, HERTZ
Local hWnd% = GetActiveWindow()
Local icon% = LoadIcon(hWnd, "icon.ico", 0); Print icon
SetClassLong hWnd, -14, icon
Local desk_hWnd% = GetDesktopWindow(), l:lpRect = New lpRECT
GetWindowRect desk_hWnd, l:lpRECT 

SetWindowPos hWnd, -2, (l.r / 2) - (GFX_WIDTH / 2), (l.b / 2) - (GFX_HEIGHT / 2), 0, 0, 1
Repeat; FlushMem; Flip; Until KeyDown(KEY_ESCAPE)
Why doesn't this work?