· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Программа остаётся в памяти.

Посл.отвђт Сообщенiе


Дата: Май 12, 2004 04:39:35

Следующая программа после нажатия на кнопку "закрыть" не выгружается из памяти если перед этим
обработать сообщение IDC_CHANGE_IN (вызов SHBrowseForFolder и SHGetPathFromIDList), если после
открытия окна сразу нажать на кнопку "закрыть" - программа выгружается.
Подскажите где ошибка. У меня Win2000.
proc start
enter
	invoke	GetModuleHandle,0
	mov	[hinstance],eax
	invoke  DialogBoxParam,[hinstance],200,0,WindowProc,0;вывод основного
                                       ; диалогового окна
return
proc WindowProc, hwnd,wmsg,wparam,lparam
	enter
	push	ebx esi edi
	cmp	[wmsg],WM_INITDIALOG
	je	.init
	cmp	[wmsg],WM_COMMAND
	je	.wmcommand
	cmp  [wmsg],WM_CLOSE
	je    .close
  .defwndproc:
	jmp	.ext
  .wmcommand:	
	  mov	 eax,[wparam]
	  cmp	 eax,IDC_CHANGE_IN
	  je	 .changeIn
	  jmp .ext
	  .changeIn:
     ;если выполнять этот код программа не выгружается из памяти
	   mov     eax,[hwnd]
	   mov     [bi.hwndOwner],eax
	   mov     eax,SelInDir
	   mov     [bi.lpszTitle],eax
	   mov     [bi.ulFlags],BIF_RETURNONLYFSDIRS or BIF_DONTGOBELOWDOMAIN
	   invoke  SHBrowseForFolder,bi
	   mov     [pidl],eax 
	   invoke  SHGetPathFromIDList,eax,inBuf 
	   invoke  MessageBox,0,inBuf,h4,MB_OK
	   invoke  CoTaskMemFree,[pidl]
	  jmp .ext
	.close:
	     invoke     EndDialog,[hwnd],0
	jmp .ext
  .init:
    invoke  LoadIcon,[hinstance],125
    invoke SendMessage,[hwnd],WM_SETICON,ICON_SMALL,EAX
	jmp .ext
.ext:  
   xor	eax,eax
  .finish:
	pop	edi esi ebx
return


Дата: Май 12, 2004 05:19:23

pas
А почему ты в диалоговой процедуре везде FALSE возвращаешь?


Дата: Май 12, 2004 07:30:33

Asterix
Imho это не криминал.

pas
SHBrowseForFolder - работает?


Дата: Май 12, 2004 15:29:32

А где вызов CoInitialize()?. Кроме того, для освобождения памяти под pidl - MSDN рекомендует использовать другой интерфейс:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shell cc/platform/shell/reference/functions/shbrowseforfolder.asp


Дата: Май 12, 2004 17:27:27

А ExitProcess там где-то есть?


Дата: Май 12, 2004 18:09:46

Quantum
Не было :-(.
Теперь выгружается, всем спасибо.


Дата: Май 12, 2004 18:15:42

pas
Ну это слишком банально, я думал что ты при постинге его потерял и не стал придираться ;-)


Дата: Май 13, 2004 03:08:39

Ошибка в том что close возвращает 0 - оно 1 должно.


Дата: Май 13, 2004 04:43:34

zzzyab
Не правда.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.042