playlisteditor.cpp

来自「PocketMVP V0.8082503 source for Pocket 的」· C++ 代码 · 共 593 行 · 第 1/2 页

CPP
593
字号
					if (fnGetFileName(hWnd,_T("*.pdl"), NULL, szPDLFile, 200,NULL,VK_ESCAPE,0))
#endif
					{
						if (wcsstr(szPDLFile,_T(".pdl")))
						{
							HANDLE h=CreateFile((LPCTSTR)szPDLFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
							int size=GetFileSize(h,NULL);
							unsigned long t;
							Edited=false;
							TCHAR* temp=(TCHAR*)malloc(size);
							TCHAR* EndPos=0;
							TCHAR* BeginPos=0;
							ReadFile(h,temp,size,&t,NULL);
							CloseHandle(h);
							BeginPos=temp;
							ListView_DeleteAllItems(hwndList);
							while(BeginPos<(temp+size) &&((EndPos=wcsstr(BeginPos,_T("\r")))!=NULL))
							{
								*EndPos=0;
								AddEntry(BeginPos,-1);
								BeginPos=EndPos+2;
							}
							free(temp);
						}
					}
					break;
				case IDM_SAVE:
					{
						TCHAR temp[200];
						wcscpy(tfile,szPDLFile);
						memset(&ofn,0,sizeof(ofn));
						ofn.lStructSize	= sizeof(ofn);
						ofn.hwndOwner = hWnd;
						ofn.lpstrFile = tfile;
						ofn.nMaxFile = MAX_PATH;
						ofn.lpstrFilter = TEXT("Play List(*.pdl)\0*.pdl\0\0");	
						ofn.lpstrTitle = TEXT("Save File");
						ofn.Flags = OFN_HIDEREADONLY|OFN_PATHMUSTEXIST;
						ofn.lpstrDefExt=_T("pdl");
						if (GetSaveFileName(&ofn))
						{
							HANDLE h=CreateFile(ofn.lpstrFile,GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
							if (h==INVALID_HANDLE_VALUE)
							{
								ofn.lpstrFile++;
								h=CreateFile(ofn.lpstrFile,GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
							}
							wcscpy(szPDLFile,ofn.lpstrFile);
							//MessageBox(hWnd,szPDLFile,_T(""),MB_OK);
							int n=0;
							for (n=0;n<ListView_GetItemCount(hwndList);n++)
							{
								unsigned long out;
								ListView_GetItemText(hwndList,n,2,temp,200);
								wcscat(temp,_T("\r\n"));
								WriteFile(h,temp,wcslen(temp)*sizeof(TCHAR),&out,NULL);
							}
							CloseHandle(h);
							Edited=false;
						}
					}
					break;
/*				case IDM_SAVE:
					{
						TCHAR temp[200];
						memset(&ofn,0,sizeof(ofn));
						ofn.lStructSize	= sizeof(ofn);
						ofn.hwndOwner = hWnd;
						ofn.lpstrFile = szPDLFile;
						ofn.nMaxFile = MAX_PATH;
						ofn.lpstrFilter = TEXT("Play List(*.pdl)\0*.pdl\0\0");	
						ofn.lpstrTitle = TEXT("Save File");
						ofn.Flags = OFN_HIDEREADONLY; 
						if (GetSaveFileName(&ofn))
						{
							HANDLE h=CreateFile(ofn.lpstrFile,GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
							int n=0;
							for (n=0;n<ListView_GetItemCount(hwndList);n++)
							{
								unsigned long out;
								ListView_GetItemText(hwndList,n,2,temp,200);
								wcscat(temp,_T("\r\n"));
								WriteFile(h,temp,wcslen(temp)*sizeof(TCHAR),&out,NULL);
							}
							CloseHandle(h);
						}
					}
					break;*/
				case IDM_DELETE:
					{
						int n=0;
						for (n=0;n<ListView_GetItemCount(hwndList);n++)
						{
							if (ListView_GetItemState(hwndList,n,LVIS_SELECTED))
							{
								ListView_DeleteItem(hwndList,n);
							}
						}
						Edited=true;
					}
					break;
				case IDM_MOVEDOWN:
					{
						int n;
						TCHAR value[200];
						for (n=0;n<ListView_GetItemCount(hwndList);n++)
						{
							if (ListView_GetItemState(hwndList,n,LVIS_SELECTED))
							{
								if (n<ListView_GetItemCount(hwndList)-1)
								{
									ListView_GetItemText(hwndList,n,2,value,200);
									ListView_DeleteItem(hwndList,n);
									AddEntry(value,n+1);
									ListView_SetItemState(hwndList,n+1,LVIS_SELECTED|LVIS_FOCUSED,0xFFFF);
									ListView_EnsureVisible( hwndList, n+1, false );
									break;
								}
							}
						}
						Edited=true;
					}
					break;
				case IDM_MOVEUP:
					{
						int n;
						TCHAR value[200];
						for (n=0;n<ListView_GetItemCount(hwndList);n++)
						{
							if (ListView_GetItemState(hwndList,n,LVIS_SELECTED))
							{
								if (n>0)
								{
									ListView_GetItemText(hwndList,n,2,value,200);
									ListView_DeleteItem(hwndList,n);
									AddEntry(value,n-1);
									ListView_SetItemState(hwndList,n-1,LVIS_SELECTED|LVIS_FOCUSED,0xFFFF);
									ListView_EnsureVisible( hwndList, n-1, false );
									break;
								}
							}
						}
						Edited=true;
					}
					break;

				case IDM_PLAY:
				case IDM_PLAYFILE:
					{
						if (!Edited) //(szPDLFile&&(wcslen(szPDLFile)>4))
						{
							int n=0;
							int ok;
							HWND d=FindWindow(NULL,_T("PocketMVP"));
							PROCESS_INFORMATION p;
							if (d) SendMessage(d,WM_CLOSE,NULL,NULL);
							TCHAR path[200];
							TCHAR file[200];
							wcscpy(file,szPDLFile);
							for (n=0;n<ListView_GetItemCount(hwndList);n++)
							{
								if (ListView_GetItemState(hwndList,n,LVIS_SELECTED))
								{
									TCHAR temp[10];
									wcscat(file,_T(" "));
									_itow(n,temp,10);
									wcscat(file,temp);
								}
							}

							HANDLE h=GetModuleHandle(_T("PlayListEditor.exe"));
							GetModuleFileName((HMODULE)h,path,200);
							LPTSTR t=wcsstr(path,_T("PlaylistEditor"));
							*t=0;
							wcscat(path,_T("PocketMVP.exe"));
							ok=CreateProcess(path,file,NULL,NULL,NULL,0,NULL,NULL,NULL,&p);
						}
						else
						{
							MessageBox(hWnd,_T("You have unsaved changes."),_T("Cannot Play"),MB_OK);
						}
					}
					break;
				case IDM_ADD_URL:
					URL=1;
				case IDM_ADD:
					wcscpy(value,_T("*.divx,*.avi"));
					if ( ERROR_SUCCESS == RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_BASE_FMT, 0, 0, &hKey ) )
					{
						dwTmp = 0;
						dwSize =sizeof(value);
						RegQueryValueEx( hKey, _T("SupportedExtensions"), 0, &dwType, ( LPBYTE )value, &dwSize );
					}
#ifdef GAPI
					if (fnGetFileName(hWnd,value, NULL,szFile, 200,&temp,g_gxk.vkStart,URL))
#else
					if (fnGetFileName(hWnd,value, NULL,szFile, 200,&temp,VK_ESCAPE,URL))
#endif
					{
							TCHAR* EndPos=0;
							TCHAR* BeginPos=0;
							BeginPos=temp;
							Edited=true;
							while(((EndPos=wcsstr(BeginPos,_T("\r")))!=NULL))
							{
								*EndPos=0;
								AddEntry(BeginPos,-1);
								BeginPos=EndPos+2;
							}
					}
					break;

				case IDM_FILE_EXIT:
				   DestroyWindow(hWnd);
				   break;
				default:
				   return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case WM_CREATE:
			{
#if (_WIN32_WCE >= 300 && !defined(HPC))
			//Create the PocketPC compatible menubar.
			HANDLE ha=LoadLibrary(_T("aygshell.dll"));
			if (ha!=NULL)
			{
				aygshell_SHCreateMenuBar=(paygshell_SHCreateMenuBar)GetProcAddress((HINSTANCE)ha,_T("SHCreateMenuBar"));
			}
			SHMENUBARINFO sMbi;
			memset( &sMbi, 0, sizeof ( SHMENUBARINFO ) );
			sMbi.cbSize = sizeof( sMbi );
			sMbi.hwndParent = hWnd;
			sMbi.dwFlags = 0; //SHCMBF_SHOWSIPBUTTON;
			sMbi.nToolBarId = IDR_MENUBAR1;
			sMbi.hInstRes = hInst;
			sMbi.nBmpId = 0;
			sMbi.cBmpImages = 0;

			if ( aygshell_SHCreateMenuBar( &sMbi ) )
			{
				hwndCB = sMbi.hwndMB;
			}
#else
			hwndCB = CommandBar_Create(hInst, hWnd, 1);			
			CommandBar_InsertMenubar(hwndCB, hInst, IDM_MENU, 0);
#endif
			TBBUTTON but;
			but.fsState=TBSTATE_ENABLED   ;
			but.fsStyle=TBSTYLE_BUTTON   ;
			but.iBitmap=0;
			but.iString=0;
			but.idCommand=IDM_OPEN;
			CommandBar_AddBitmap(hwndCB,hInst,IDB_BUTTONS,8,16,16);
			CommandBar_AddToolTips(hwndCB,9,ToolTips);
			CommandBar_InsertButton(hwndCB,1, &but);
			but.iBitmap=1;
			but.idCommand=IDM_SAVE;
			CommandBar_InsertButton(hwndCB,2, &but);
			but.iBitmap=2;
			but.idCommand=IDM_ADD;
			CommandBar_InsertButton(hwndCB,3, &but);
			but.iBitmap=3;
			but.idCommand=IDM_ADD_URL;
			CommandBar_InsertButton(hwndCB,4, &but);
			but.iBitmap=4;
			but.idCommand=IDM_DELETE;
			CommandBar_InsertButton(hwndCB,5, &but);
			but.iBitmap=5;
			but.idCommand=IDM_PLAY;
			CommandBar_InsertButton(hwndCB,6, &but);
			but.iBitmap=6;
			but.idCommand=IDM_MOVEUP;
			CommandBar_InsertButton(hwndCB,7, &but);
			but.iBitmap=7;
			but.idCommand=IDM_MOVEDOWN;
			CommandBar_InsertButton(hwndCB,8, &but);
#if ( defined(HPC))
			CommandBar_AddAdornments(hwndCB,NULL,NULL);
#endif
			}
			break;
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			EndPaint(hWnd, &ps);
			break;
		case WM_DESTROY:
			CommandBar_Destroy(hwndCB);
			PostQuitMessage(0);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

⌨️ 快捷键说明

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