⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getfilename.cpp

📁 一个播放器 使用了evc 大家可以参考下 哦
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		dwTmp = 0;
		wcscpy(temp,OPT_URL);
		for (n=0;n<5;n++)
		{
			dwSize =sizeof(value);
			_itow(n,temp+4,10);
			temp[5]=0;
			if ( ERROR_SUCCESS == RegQueryValueEx( hKey, temp, 0, &dwType, ( LPBYTE )value, &dwSize ) )
			{
				if (wcscmp(value,_T(""))) SendMessage(hwndURL,CB_ADDSTRING,0,(LPARAM)value);
			}
		}
		RegCloseKey( hKey );
	}
}

void LoadSort()
{
	HKEY hKey = 0;
	DWORD dwSize = 0;
	DWORD dwType = 0;
	DWORD dwTmp;
	if ( ERROR_SUCCESS == RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_BASE, 0, 0, &hKey ) )
	{
		dwTmp = 0;
		dwSize =sizeof(int);
		RegQueryValueEx( hKey, _T("SortCol"), 0, &dwType, ( LPBYTE )&SortCol, &dwSize );
		RegQueryValueEx( hKey, _T("SortDir"), 0, &dwType, ( LPBYTE )&Dir, &dwSize );
		RegCloseKey( hKey );
	}
}

void SaveSort()
{
	HKEY hKey = 0;
	DWORD dwDisp = 0;
	int n=0;
	if ( ERROR_SUCCESS == RegCreateKeyEx( HKEY_LOCAL_MACHINE, REG_BASE, NULL, 0, 0,
		KEY_READ | KEY_WRITE | KEY_SET_VALUE,
		NULL, &hKey, &dwDisp ) )
	{
		RegSetValueEx( hKey, _T("SortCol"), 0, REG_DWORD, ( LPBYTE )&SortCol, sizeof(DWORD));
		RegSetValueEx( hKey, _T("SortDir"), 0, REG_DWORD, ( LPBYTE )&Dir, sizeof(DWORD));
		RegCloseKey( hKey );
	}

}
void SaveRecent()
{
	HKEY hKey = 0;
	DWORD dwDisp = 0;
	TCHAR temp[10];
	TCHAR value[200];
	int n=0;
	if ( ERROR_SUCCESS == RegCreateKeyEx( HKEY_LOCAL_MACHINE, REG_BASE, NULL, 0, 0,
		KEY_READ | KEY_WRITE | KEY_SET_VALUE,
		NULL, &hKey, &dwDisp ) )
	{
		wcscpy(temp,OPT_URL);
		for (n=0;n<5;n++)
		{
			_itow(n,temp+4,10);
			temp[5]=0;
			if (SendMessage(hwndURL,CB_GETLBTEXT,n,(WPARAM)value)!=CB_ERR)
				RegSetValueEx( hKey, temp, 0, REG_SZ, ( LPBYTE )value, sizeof(value));
		}
		RegCloseKey( hKey );
	}

}


//
//  FUNCTION: InitInstance(HANDLE, int)
//
//  PURPOSE: Saves instance handle and creates main window
//
//  COMMENTS:
//
//    In this function, we save the instance handle in a global variable and
//    create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
	HWND	hWnd;
	TCHAR Temp[200];
	hInst = hInstance;		// Store instance handle in our global variable
	MyRegisterClass(hInstance, _T("OpenDialog"));

	hWnd=hwndMain = CreateWindow(_T("OpenDialog"), _T("Open File"), WS_VISIBLE,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

	if (!hWnd)
	{	
		return FALSE;
	}
	RECT rc;
	GetClientRect(hWnd,&rc);
#ifndef SMART
	rc.bottom-=48;
	hwndOK=CreateWindow(_T("BUTTON"), _T("OK"), WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
		rc.right-80, rc.top+1, 64, 21, hWnd, NULL, hInstance, NULL);
	hwndFolder=CreateWindow(_T("BUTTON"), _T("All"), WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
		(rc.right-rc.left)/2-32, rc.top+1, 64, 21, hWnd, NULL, hInstance, NULL);
	HWND hwndCancel=CreateWindow(_T("BUTTON"), _T("Cancel"), WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
		rc.left+16, rc.top+1, 64, 21, hWnd, NULL, hInstance, NULL);
	rc.top+=23;
#endif
	if (g_webView)
	{
		hwndURL=CreateWindow(_T("COMBOBOX"), _T(""), WS_VISIBLE|WS_CHILD|WS_BORDER|CBS_AUTOHSCROLL|CBS_DROPDOWN,
			rc.left, rc.top+2, rc.right-64, 100, hWnd, NULL, hInstance, NULL);
		hwndBrowse=CreateWindow(_T("BUTTON"), _T("Browse"), WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
			rc.right-64, rc.top+1, 64, 21, hWnd, NULL, hInstance, NULL);
		rc.top+=23;
		rc.bottom-=23;
		SetWindowText(hwndURL,FileName);
		HistoryPos=0;
		FillRecent();
	}
		InitCommonControls();
	if (AllowMulti)
		hwndList=CreateWindow(_T("SysListView32"), _T(""), WS_VISIBLE|WS_CHILD|WS_VSCROLL|LVS_REPORT,
			rc.left, rc.top, rc.right, rc.bottom, hWnd, NULL, hInstance, NULL);
	else
		hwndList=CreateWindow(_T("SysListView32"), _T(""), WS_VISIBLE|WS_CHILD|WS_VSCROLL|LVS_REPORT|LVS_SINGLESEL,
			rc.left, rc.top, rc.right, rc.bottom, hWnd, NULL, hInstance, NULL);

	ListView_SetExtendedListViewStyle(hwndList,LVS_EX_FULLROWSELECT);
	HIMAGELIST hwndImage=ImageList_LoadBitmap((HINSTANCE)hmod,MAKEINTRESOURCE(IDB_BITMAP1),16,0,CLR_NONE);
	
	ListView_SetImageList(hwndList,hwndImage,LVSIL_SMALL);
	LVCOLUMN lv;
	lv.mask=LVCF_TEXT | LVCF_WIDTH ;
	lv.fmt=LVCFMT_LEFT ;
	lv.cx=120;
	lv.pszText=_T("File");
	lv.cchTextMax=5;
	ListView_InsertColumn(hwndList,0,&lv);
	lv.cx=40;
	lv.pszText=_T("Type");
	ListView_InsertColumn(hwndList,1,&lv);
	if (!g_webView)
	{
		lv.cx=80;
		lv.mask=LVCF_TEXT | LVCF_WIDTH | LVCF_FMT ;
		lv.fmt=LVCFMT_RIGHT ;
		lv.pszText=_T("Size");
	}
	else
	{
		lv.cx=500;
		lv.mask=LVCF_TEXT | LVCF_WIDTH | LVCF_FMT ;
		lv.fmt=LVCFMT_LEFT ;
		lv.pszText=_T("URL");
	}
	ListView_InsertColumn(hwndList,2,&lv);
	wcscpy(Temp,CurrentPath);
	wcscat(Temp,_T("*.*"));

	if (!g_webView) FillWindow(hwndList,Temp);
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	oldproc=SetWindowLong(hwndList,GWL_WNDPROC,(long)ListProc);
	SetFocus(hwndList);
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)&&(IsWindow(hwndMain))) 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	UnregisterClass(_T("OpenDialog"),hInstance);
	return NumFiles;
}

void PickItem()
{
	TCHAR Temp[200];
	LPTSTR current=MultiBuff;
	int n=0;
	wcscpy(FileName,_T(""));
	for (n=0;n<ListView_GetItemCount(hwndList);n++)
	{
		if (ListView_GetItemState(hwndList,n,LVIS_SELECTED))
		{
	
			ListView_GetItemText(hwndList,n,1,Temp,200);
			if (!wcscmp(Temp,_T("")))
			{
				if (!g_webView) 
				{
					wcscpy(Temp,_T(""));
					int n=wcslen(CurrentPath)-2;
					while(n>0&&(CurrentPath[n]!=_T('\\')))
					{
						n--;
					}
					if (n<0) n=0;
					CurrentPath[n+1]=0;
					wcscpy(Temp,CurrentPath);
					wcscat(Temp,_T("*.*"));
					FillWindow(hwndList,Temp);
				}
				else
				{
					if (HistoryPos>1)
					{
						HistoryPos-=2;
						SetWindowText(hwndURL,History[HistoryPos]);
						ParseURL(hwndList,History[HistoryPos]);
					}
				}
				return;
			}

			else if (wcsstr(Temp,_T("Dir"))!=NULL)
			{
				if (!g_webView) 
				{
					ListView_GetItemText(hwndList,n,0,Temp,200);
					wcscat(CurrentPath,Temp);
					wcscat(CurrentPath,_T("\\"));
					wcscpy(Temp,CurrentPath);
					wcscat(Temp,_T("*.*"));
					FillWindow(hwndList,Temp);
				}
				else 
				{
					ListView_GetItemText(hwndList,n,2,Temp,200);
					SetWindowText(hwndURL,Temp);
					ParseURL(hwndList,Temp);
				}
				return;
			}
			else
			{
				if (!g_webView)
				{
					ListView_GetItemText(hwndList,n,0,Temp,200);
					wcscpy(FileName,CurrentPath);
				}
				else
				{
					wcscpy(FileName,_T(""));
					ListView_GetItemText(hwndList,n,2,Temp,200);

				}
				wcscat(FileName,Temp);
				wcscpy(current,FileName);
				wcscat(current,_T("\r\n"));
				current+=(wcslen(FileName)+2);
				NumFiles++;
			}
		}
	}
	if (!NumFiles&&(g_webView))
	{
		TCHAR value[200];
		GetWindowText(hwndURL,Temp,200);
		wcscpy(current,Temp);
		wcscpy(FileName,Temp);
		int cur=SendMessage(hwndURL,CB_GETCURSEL,0,0);
		if (cur>=0)
		{
			SendMessage(hwndURL,CB_GETLBTEXT,cur,(WPARAM)value);
			if (!wcscmp(value,Temp)) SendMessage(hwndURL,CB_DELETESTRING,cur,0);
		}
		SendMessage(hwndURL,CB_INSERTSTRING,0,(WPARAM)Temp);
		SendMessage(hwndURL,CB_SETCURSEL,0,0);
		SaveRecent();
		NumFiles=1;
	}
	wcscat(current,_T("\0\0"));
	EnableWindow(g_Parent,true);
	DestroyWindow(hwndMain);
}

void PickFolder()
{
	TCHAR Temp[200];
	LPTSTR current=MultiBuff;
	int n=0;
	wcscpy(FileName,_T(""));
	for (n=0;n<ListView_GetItemCount(hwndList);n++)
	{
		ListView_GetItemText(hwndList,n,1,Temp,200);
		if (!wcscmp(Temp,_T("")))
		{
		}

		else if (wcsstr(Temp,_T("Dir"))!=NULL)
		{
		}
		else
		{
			if (!g_webView)
			{
				ListView_GetItemText(hwndList,n,0,Temp,200);
				wcscpy(FileName,CurrentPath);
			}
			else
			{
				wcscpy(FileName,_T(""));
				ListView_GetItemText(hwndList,n,2,Temp,200);
			}
			wcscat(FileName,Temp);
			wcscpy(current,FileName);
			wcscat(current,_T("\r\n"));
			current+=(wcslen(FileName)+2);
			NumFiles++;
		}
	}
	if (NumFiles)
	{
		wcscat(current,_T("\0\0"));
		EnableWindow(g_Parent,true);
		DestroyWindow(hwndMain);
	}
}


LRESULT CALLBACK ListProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{
		case WM_KEYDOWN:
			if (wParam == vkCtrl)
			{
				keybd_event(VK_CONTROL,1,0,0);
				KeyDown=true;
				return 0;
			}		
			if (wParam == 13)
			{
				int n;
				for (n=0;n<ListView_GetItemCount(hwndList);n++)
				{
					if (ListView_GetItemState(hwndList,n,LVIS_SELECTED))
					{
						SelectedRow=n;
						PickItem();

					}
				}
			}
#if (_WIN32_WCE >= 300)||(defined(_X86_))
			return CallWindowProc((WNDPROC)oldproc,hWnd,message,wParam,lParam);
#else
			return CallWindowProc((int (__cdecl *)(void))oldproc,hWnd,message,wParam,lParam);
#endif
			break;
		case WM_KEYUP:
			if (wParam == vkCtrl)
			{
				keybd_event(VK_CONTROL,1,KEYEVENTF_KEYUP,0);
				KeyDown=false;
				return 0;
			}
#ifdef SMART
			if (wParam==113)
			{
				LVITEM lv;
				for (int n=0;n<ListView_GetItemCount(hwndList);n++)
				{
					lv.iItem=n;
					lv.mask=LVIF_PARAM;
					ListView_GetItem(hwndList,&lv);
					if (lv.lParam) delete (entry*)lv.lParam;
				}	
				EnableWindow(g_Parent,true);
				DestroyWindow(hwndMain);
			}
			if (wParam==112)
			{
				PickFolder();
			}
#endif
#if (_WIN32_WCE >= 300)||(defined(_X86_))
			return CallWindowProc((WNDPROC)oldproc,hWnd,message,wParam,lParam);
#else
			return CallWindowProc((int (__cdecl *)(void))oldproc,hWnd,message,wParam,lParam);
#endif
			break;
		default:
#if (_WIN32_WCE >= 300)||(defined(_X86_))
			return CallWindowProc((WNDPROC)oldproc,hWnd,message,wParam,lParam);
#else
			return CallWindowProc((int (__cdecl *)(void))oldproc,hWnd,message,wParam,lParam);
#endif
			break;
	}
}
//
//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND	- process the application menu
//  WM_PAINT	- Paint the main window
//  WM_DESTROY	- post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	int wmEvent;
	PAINTSTRUCT ps;

	switch (message) 
	{

		case WM_NOTIFY:
		{
			LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lParam;
			if (lpnmlv->hdr.code==LVN_ITEMCHANGED &&(lpnmlv->iItem!=-1))
			{
				if (lpnmlv->uNewState==3)
					SelectedRow=lpnmlv->iItem;
			}
				 
			if (lpnmlv->hdr.code==NM_CLICK&&(lpnmlv->iItem!=-1)&&(ListView_GetSelectedCount(hwndList)<2)&&(!KeyDown))
			{
				SelectedRow=lpnmlv->iItem;
				PickItem();
			}

			if (lpnmlv->hdr.code==LVN_COLUMNCLICK)
			{
				if (SortCol!=lpnmlv->iSubItem)
				{
					Dir=1;
				}
				else
				{
					Dir*=-1;
				}
				SortCol=lpnmlv->iSubItem;
				ListView_SortItems( lpnmlv->hdr.hwndFrom,
					ListViewCompareProc,
					(LPARAM)(lpnmlv->iSubItem));
			}
			break;

		}
		break;
		case WM_COMMAND:
			wmEvent = HIWORD(wParam); 
			// Parse the menu selections:
			switch (wmEvent)
			{
				case BN_CLICKED:
					if ((HWND)lParam==hwndOK)
					{
						PickItem();
					}
					else if ((HWND)lParam==hwndFolder)
					{
						PickFolder();
					}
					else if ((HWND)lParam==hwndBrowse)
					{
						TCHAR URL[200];
						GetWindowText(hwndURL,URL,200);
						if (wcscmp(URL,_T("")))
						{
							TCHAR value[200];
							if (wcsnicmp(URL,_T("http://"),7))
							{
								wcscpy(value,_T("http://"));
								wcscat(value,URL);
								SetWindowText(hwndURL,value);
								wcscpy(URL,value);
							}
							int cur=SendMessage(hwndURL,CB_GETCURSEL,0,0);
							if (cur>=0)
							{
								SendMessage(hwndURL,CB_GETLBTEXT,cur,(WPARAM)value);
								if (!wcscmp(value,URL)) SendMessage(hwndURL,CB_DELETESTRING,cur,0);
							}
							SendMessage(hwndURL,CB_INSERTSTRING,0,(WPARAM)URL);
							SendMessage(hwndURL,CB_SETCURSEL,0,0);
							SaveRecent();
							HistoryPos=0;
							ParseURL(hwndList,URL);

						}
					}
					else
					{
						LVITEM lv;
						for (int n=0;n<ListView_GetItemCount(hwndList);n++)
						{
							lv.iItem=n;
							lv.mask=LVIF_PARAM;
							ListView_GetItem(hwndList,&lv);
							if (lv.lParam) delete (entry*)lv.lParam;
						}	
						EnableWindow(g_Parent,true);
						DestroyWindow(hWnd);
					}
					break;
			}
			break;
		case WM_DESTROY:
			SetWindowLong(hwndList,GWL_WNDPROC,(long)oldproc);
			break;
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			EndPaint(hWnd, &ps);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// This is an example of an exported function.
GETFILENAME_API int fnGetFileName(HWND Parent,LPTSTR Filter, LPTSTR initialDir, LPTSTR OutFileName, int MaxFileName,LPTSTR* szMultiBuff,unsigned int vkctrl,int webview)
{
	int ret;
	bEnd=false;
	g_Parent=Parent;
	g_webView=webview;
	vkCtrl=vkctrl;
	EnableWindow(Parent,false);
	wcscpy(g_Filter,Filter);
	wcsupr(g_Filter);
	wcscpy(FileName,OutFileName);
	if (initialDir) wcscpy(CurrentPath,initialDir);
	NumFiles=0;
	AllowMulti=(szMultiBuff!=NULL);
	LoadSort();
	ret=InitInstance ((HINSTANCE)hmod, SW_SHOW); 
	SaveSort();
	wcscpy(OutFileName,FileName);
	if (szMultiBuff) *szMultiBuff=MultiBuff;
	return ret;

}

// This is the constructor of a class that has been exported.
// see GetFileName.h for the class definition
CGetFileName::CGetFileName()
{ 
	return; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -