본문 바로가기

::LoadIcon과 ::LoadImage HICON LoadIcon( HINSTANCE hInstance, LPCTSTR lpIconName ); HANDLE LoadImage( HINSTANCE hinst, LPCTSTR lpszName, UINT uType, int cxDesired, int cyDesired, UINT fuLoad ); 일단 두 함수의 프로토타입은 이렇고, MSDN의 LoadIcon 항목에는LoadIcon이 LoadImage로 대체되었다고 한다. 대체라? deprecate된 것들과 차이가 뭔지 잘 모르겠다. Note This function hase been superseded by the LoadImage function. 일단 16x16, 32x32, 48x48 크기의 아이콘 리소스가 실행파일에 포함되어 있고 이를 읽어.. 더보기
SHChangeNotifyRegister 사용중 의문점 첫번째- PIDL 관련, simple PIDL? ::SHChangeNotifyRegister(hwnd, SHCNRF_ShellLevel, SHCNE_RENAMEFOLDER, MY_MESSAGE, 1, &entry); 위 처럼 폴더의 이름변경을 알기 위해 메시지를 등록했다. 전에 글에서 적은 것처럼 메시지의 WPARAM로 변경된 폴더 관련 PIDL이 넘어온다. 이 PIDL(absolute)을 이용해 ::SHBindToParent() 함수에서 부모폴더의 IShellFolder 인터페이스와 부모폴더에 상대적인 PIDL을 얻었다. ::SHBindToParent(fullyPidl, IID_IShellFolder, (void**)&iparent, (LPCITEMIDLIST*)&childPidl)) iparent->.. 더보기
폴더 이름 얻기에 관해 (::SHGetFileInfo, IShellFolder::GetDisplayNameOf) PIDL로 폴더의 이름을 얻기위해 ::SHGetFileInfo()를 사용중이었는데 "My Documents"나 "My Music" 같은 가상 폴더의 경우, "Administrator's Music" 같은 식으로 윈도우 계정의 이름이 붙어서 리턴됐다. IShellFolder::GetDisplayNameOf()를 사용하면 "My Music" 처럼 탐색기에 보여지는 이름대로 리턴된다. 한가지 더, ::SHGetFileInfo()의 경우 IDLIST_RELATIVE 같은 부모폴더의 상대적인 PIDL을 전달하면 "C:\"나 "CD Drive (E:)" 같은 "My Computer"에 바로 붙은 노드들은 이름이 빈 문자열로 리턴되는 경우가 있다. 이럴 때 IDLIST_ABSOUTE의 PIDL을 전달해주면 제대로 이.. 더보기