MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / FileMRUIconThread

Function FileMRUIconThread

src/Dialogs.c:761–828  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

759} ICONTHREADINFO, *LPICONTHREADINFO;
760
761DWORD WINAPI FileMRUIconThread ( LPVOID lpParam )
762{
763 HWND hwnd;
764 LPICONTHREADINFO lpit;
765 LV_ITEM lvi;
766 WCHAR tch[MAX_PATH];
767 SHFILEINFO shfi;
768 DWORD dwFlags = SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_ATTRIBUTES | SHGFI_ATTR_SPECIFIED;
769 DWORD dwAttr = 0;
770 int iItem = 0;
771 int iMaxItem;
772 lpit = ( LPICONTHREADINFO ) lpParam;
773 ResetEvent ( lpit->hTerminatedThread );
774 hwnd = lpit->hwnd;
775 iMaxItem = ListView_GetItemCount ( hwnd );
776 CoInitialize ( NULL );
777 ZeroMemory ( &lvi, sizeof ( LV_ITEM ) );
778 while ( iItem < iMaxItem && WaitForSingleObject ( lpit->hExitThread, 0 ) != WAIT_OBJECT_0 ) {
779 lvi.mask = LVIF_TEXT;
780 lvi.pszText = tch;
781 lvi.cchTextMax = COUNTOF ( tch );
782 lvi.iItem = iItem;
783 if ( ListView_GetItem ( hwnd, &lvi ) ) {
784 if ( PathIsUNC ( tch ) || !PathFileExists ( tch ) ) {
785 dwFlags |= SHGFI_USEFILEATTRIBUTES;
786 dwAttr = FILE_ATTRIBUTE_NORMAL;
787 shfi.dwAttributes = 0;
788 SHGetFileInfo ( PathFindFileName ( tch ), dwAttr, &shfi, sizeof ( SHFILEINFO ), dwFlags );
789 } else {
790 shfi.dwAttributes = SFGAO_LINK | SFGAO_SHARE;
791 SHGetFileInfo ( tch, dwAttr, &shfi, sizeof ( SHFILEINFO ), dwFlags );
792 }
793 lvi.mask = LVIF_IMAGE;
794 lvi.iImage = shfi.iIcon;
795 lvi.stateMask = 0;
796 lvi.state = 0;
797 if ( shfi.dwAttributes & SFGAO_LINK ) {
798 lvi.mask |= LVIF_STATE;
799 lvi.stateMask |= LVIS_OVERLAYMASK;
800 lvi.state |= INDEXTOOVERLAYMASK ( 2 );
801 }
802 if ( shfi.dwAttributes & SFGAO_SHARE ) {
803 lvi.mask |= LVIF_STATE;
804 lvi.stateMask |= LVIS_OVERLAYMASK;
805 lvi.state |= INDEXTOOVERLAYMASK ( 1 );
806 }
807 if ( PathIsUNC ( tch ) ) {
808 dwAttr = FILE_ATTRIBUTE_NORMAL;
809 } else {
810 dwAttr = GetFileAttributes ( tch );
811 }
812 if ( !flagNoFadeHidden &&
813 dwAttr != INVALID_FILE_ATTRIBUTES &&
814 dwAttr & ( FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM ) ) {
815 lvi.mask |= LVIF_STATE;
816 lvi.stateMask |= LVIS_CUT;
817 lvi.state |= LVIS_CUT;
818 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected