本人新手一只
最近写个程序,想把程序设置成多个大小图标的样式
将MAINICON替换为多个大小的图标后还算正常
只是,当我添加上vista之后支持的256*256的超大图标后,编译总是显示out of memory
然后又将曾经在vb中用过的设置程序图标的一个小过程移植了过去,seticon,在资源中另外设置一个图标,结果……开始第一次编译倒是成功了,但是重新打开工程后还是内存溢出。
好想用vista的超大图标啊……附上咱的过程procedure TfrmMain.SetIcon(hwnd:THandle; sIconResName:string; bSetAsAppIcon:boolean);
var
  lhWndTop:longint;
  lhWnd:THandle;
  cx:longint;
  cy:longint;
  hIconLarge:longint;
  hIconSmall:longint;
begin
  if (bSetAsAppIcon) then
  begin
    lhWnd := hwnd;
    lhWndTop := lhWnd;
    While Not (lhWnd = 0) do
    begin
      lhWnd := GetWindow(lhWnd, GW_OWNER);
      If Not (lhWnd = 0) Then
        lhWndTop := lhWnd;
    end;
  end;
  cx := GetSystemMetrics(SM_CXICON);
  cy := GetSystemMetrics(SM_CYICON);
  hIconLarge := LoadImageAsString(application.InstanceSize, sIconResName, IMAGE_ICON, cx, cy, LR_SHARED);
  If (bSetAsAppIcon) Then SendMessageLong (lhWndTop, WM_SETICON, ICON_BIG, hIconLarge);
  SendMessageLong (hwnd, WM_SETICON, ICON_BIG, hIconLarge);  cx := GetSystemMetrics(SM_CXSMICON);
  cy := GetSystemMetrics(SM_CYSMICON);
  hIconSmall := LoadImageAsString(Application.InstanceSize, sIconResName, IMAGE_ICON, cx, cy, LR_SHARED);  If (bSetAsAppIcon) Then SendMessageLong (lhWndTop, WM_SETICON, ICON_SMALL, hIconSmall);
  SendMessageLong (hwnd, WM_SETICON, ICON_SMALL, hIconSmall);end;里面有些东西是不懂装懂弄上的……不过编译倒是没报错