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

📄 main.cpp

📁 播放器源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:

		  if(playback->hasSubtitles) {

			  SetWindowText(GetDlgItem(hDlg, IDC_STATIC_SUB), playback->subtitler->GetName());
		  }
		  else {

			  SetWindowText(GetDlgItem(hDlg, IDC_STATIC_SUB),  "Not Available");
		  }

		  return (0);
		break;

      case WM_SYSCOMMAND:
        if (wParam == SC_CLOSE)
          {
          EndDialog (hDlg, TRUE);
          return (TRUE);
          }
        break;

	  case WM_COMMAND:

        switch (wParam)
		{
		  case IDB_PROPERTIES_OK:
			
			  EndDialog(hDlg, TRUE);
			  return TRUE;
			  break;

		  default:
			  return 0;
		}
		break;
	}

  return FALSE;
}

/**************************************************************************************
 *                                                                                    *
 *                           DlgProc for the About Dialog                             *
 *                        -----------------------------------                         *
 **************************************************************************************/

int APIENTRY AboutDlgProc (HWND hDlg, WORD wMsg, LONG wParam, LONG lParam)
{
  switch (wMsg)
    {
      case WM_INITDIALOG:
        return (0);
		break;

      case WM_SYSCOMMAND:
        if (wParam == SC_CLOSE)
          {
          EndDialog (hDlg, TRUE);
          return (TRUE);
          }
        break;

	  case WM_COMMAND:

        switch (wParam)
		{
		  case IDB_ABOUT_OK:
			
			  EndDialog(hDlg, TRUE);
			  return TRUE;
			  break;

		  default:
			  return 0;
		}
		break;
	}

  return FALSE;
}

/**************************************************************************************
 *                                                                                    *
 *                        DlgProc for the Skin Browser Dialog                         *
 *                        -----------------------------------                         *
 **************************************************************************************/

int APIENTRY SkinBrowserDlgProc (HWND hDlg, WORD wMsg, LONG wParam, LONG lParam)
{
  switch (wMsg)
    {
      case WM_INITDIALOG:

		  int /*nItem, */i;
		  
		  /*
		   * Init the list of skins
		   */
			

		  SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_ADDSTRING, 0, (LONG) "[Default Skin]");
		  SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_SETCURSEL, 0, 0); 
		  
		  if(skinList->skinsDir != NULL) {

			  SendMessage(GetDlgItem(hDlg, IDC_COMBO_DIR), CB_ADDSTRING, 0, (LONG)skinList->skinsDir);
		      SendMessage(GetDlgItem(hDlg, IDC_COMBO_DIR), CB_SETCURSEL, 0, 0);
		  }

		  skinList->Scan();

		  for(i=0; i < skinList->getNumberOfSkins(); i++) {
		  
			  SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_ADDSTRING, 0, (LONG) skinList->getSkinInfo(i)->name);

			  if(strcmp(skinList->getSkinInfo(i)->directory, skinPath) == 0) {

				  SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_SETCURSEL, i+1, 0); 
			  }
		  }

		  return (0);
		break;

      case WM_SYSCOMMAND:
        if (wParam == SC_CLOSE)
          {
          EndDialog (hDlg, TRUE);
          return (TRUE);
          }
        break;

	  case WM_COMMAND:

	    switch (LOWORD(wParam))  {
		  
          case IDC_SKIN_LIST: 
              
			  switch (HIWORD(wParam)) { 
                  
			  case LBN_SELCHANGE:
				  
				  int nItem;

				  nItem = SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_GETCURSEL, 0, 0); 

				  if(nItem == 0) {
					  
					  RECT rect;

					  skin->LoadDefault(hInstance, hwnd);
					  strcpy(skinPath, "Default");

					  UpdateMainWindow();
				  }
				  else {
					  
					  RECT rect;

					  skin->Load(skinList->getSkinInfo(nItem - 1)->directory, hwnd);
					  strcpy(skinPath, skinList->getSkinInfo(nItem  - 1)->directory);

					  UpdateMainWindow();
				  }

				  break;
			  }
		}

        switch (wParam)
		{
		  case IDB_SKINS_OK:
			
			  EndDialog(hDlg, TRUE);
			  return TRUE;
			  break;
		  
		  case ID_SKINS_CANCEL:
			
			  EndDialog(hDlg, TRUE);
			  return TRUE;
			  break;

		  case IDC_CHANGE_DIR:

			  dirChooser = new CDirDialog();

			  if(dirChooser->DoBrowse()) {
				
				skinList->SetDir(dirChooser->m_strPath);

				SendMessage(GetDlgItem(hDlg, IDC_COMBO_DIR), CB_RESETCONTENT, 0, 0);
				SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_RESETCONTENT, 0, 0);

				SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_ADDSTRING, 0, (LONG) "[Default Skin]");
				SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_SETCURSEL, 0, 0); 
			
				if(skinList->skinsDir != NULL) {
	
				  SendMessage(GetDlgItem(hDlg, IDC_COMBO_DIR), CB_ADDSTRING, 0, (LONG)skinList->skinsDir);
			      SendMessage(GetDlgItem(hDlg, IDC_COMBO_DIR), CB_SETCURSEL, 0, 0);
			  }

			  skinList->Scan();

			  for(i=0; i < skinList->getNumberOfSkins(); i++) {
			  
				  SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_ADDSTRING, 0, (LONG) skinList->getSkinInfo(i)->name);

				  if(strcmp(skinList->getSkinInfo(i)->directory, skinPath) == 0) {
	
					  SendMessage(GetDlgItem(hDlg, IDC_SKIN_LIST), LB_SETCURSEL, 0, 0); 
				  }
			  }	
			
			  }
			  break;

		  default:
			  return 0;
		}
		break;
	}

  return FALSE;
}

/**************************************************************************************
 *                                                                                    *
 *                          DlgProc for the Open URL Dialog                           *
 *                        -----------------------------------                         *
 **************************************************************************************/

int APIENTRY UrlDlgProc (HWND hDlg, WORD wMsg, LONG wParam, LONG lParam)
{

  switch (wMsg)
    {
      case WM_INITDIALOG:

		  SendMessage(GetDlgItem(hDlg, IDC_RADIO_HTTP), BM_SETCHECK, BST_CHECKED, 0);

		  EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_USERNAME), FALSE);
		  EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_PASSWORD), FALSE);
		  EnableWindow(GetDlgItem(hDlg, IDC_CHECK_ANONYMOUS),     FALSE);
		  EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_SERVER),   FALSE);
		  EnableWindow(GetDlgItem(hDlg, IDC_COMBO_FTP),           FALSE);
		  EnableWindow(GetDlgItem(hDlg, IDC_EDIT_USERNAME),       FALSE);
		  EnableWindow(GetDlgItem(hDlg, IDC_EDIT_PASSWORD),       FALSE);

		  return (0);
		break;

      case WM_SYSCOMMAND:

        if (wParam == SC_CLOSE) {

            EndDialog (hDlg, TRUE);
            return (TRUE);
        }
        break;

	  case WM_COMMAND:

        switch (wParam)
		{

		case IDC_RADIO_HTTP:

		    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_USERNAME), FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_PASSWORD), FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_CHECK_ANONYMOUS),     FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_SERVER),   FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_COMBO_FTP),           FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_EDIT_USERNAME),       FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_EDIT_PASSWORD),       FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_EXAMPLE),             TRUE);
			
		    EnableWindow(GetDlgItem(hDlg, IDC_COMBO_HTTP),  TRUE);
		    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_HTTP), TRUE);
			break;

		case IDC_RADIO_FTP:

		    EnableWindow(GetDlgItem(hDlg, IDC_CHECK_ANONYMOUS),     TRUE);
		    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_SERVER),   TRUE);
		    EnableWindow(GetDlgItem(hDlg, IDC_COMBO_FTP),    TRUE);
			
		    EnableWindow(GetDlgItem(hDlg, IDC_COMBO_HTTP),  FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_HTTP), FALSE);
		    EnableWindow(GetDlgItem(hDlg, IDC_EXAMPLE),     FALSE);

			anonymous = 1;
		    CheckDlgButton(hDlg, IDC_CHECK_ANONYMOUS, TRUE);
			break;

		case IDC_CHECK_ANONYMOUS:

			anonymous = anonymous ? 0 : 1;

			if(anonymous) {

			    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_USERNAME), FALSE);
			    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_PASSWORD), FALSE);
			    EnableWindow(GetDlgItem(hDlg, IDC_EDIT_USERNAME),       FALSE);
			    EnableWindow(GetDlgItem(hDlg, IDC_EDIT_PASSWORD),       FALSE);
			}
			else {

			    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_USERNAME), TRUE);
			    EnableWindow(GetDlgItem(hDlg, IDC_STATIC_FTP_PASSWORD), TRUE);
			    EnableWindow(GetDlgItem(hDlg, IDC_EDIT_USERNAME),       TRUE);
			    EnableWindow(GetDlgItem(hDlg, IDC_EDIT_PASSWORD),       TRUE);
			}

			break;

		case IDB_URL_OK:
			
			EndDialog(hDlg, TRUE);

			RECT rect;

			GetClientRect(hwnd, &rect);
			InvalidateRect(hwnd, &rect, TRUE); 
			UpdateWindow(hwnd);

			openOK = FALSE;

			if(SendMessage(GetDlgItem(hDlg, IDC_RADIO_HTTP), BM_GETCHECK, 0, 0) == BST_CHECKED) {

				SHORT lineLength;

				/*
				 * HTTP
				 */

				lineLength = (short) SendMessage(GetDlgItem(hDlg, IDC_EDIT_HTTP), EM_LINELENGTH, 0, 0);

				/*
				 * This f***ing bas***d windows API
				 * wants the size of the url buffer
				 * to be written into the first 2 bytes...
				 *
				 */

				url = (char *) new char[lineLength + 1];
				memcpy(url, &lineLength, 2);

				SendMessage(GetDlgItem(hDlg, IDC_EDIT_HTTP), EM_GETLINE, 0, (LONG)(LPVOID)url);
				url[lineLength] = '\0';

				if(strstr(url, "http://") != NULL || strstr(url, "HTTP://") != NULL) {

					openOK = TRUE;
					return 0;
				}
			}
			else {

				SHORT lineLength;

				/*
				 * FTP
				 */

				lineLength = (short) SendMessage(GetDlgItem(hDlg, IDC_RADIO_HTTP), EM_LINELENGTH, 0, 0);

				/*
				 * This f***ing bas***d windows API
				 * wants the size of the url buffer
				 * to be written into the first 2 bytes...
				 *
				 */

				url = (char *) new char[lineLength + 1];
				memcpy(url, &lineLength, 2);

				SendMessage(GetDlgItem(hDlg, IDC_EDIT_HTTP), EM_GETLINE, 0, (LONG)(LPVOID)url);
				url[lineLength] = '\0';

				if(strstr(url, "ftp://") != NULL || strstr(url, "FTP://") != NULL) {

					if(anonymous) {
						
						openOK = TRUE;
						return 0;
					}
					else {

						/*
						 * Not implemented yet.
						 *
						 */

					}
				}
			}
			  
			return TRUE;
			break;

		case IDB_URL_CANCEL:
			
			EndDialog(hDlg, TRUE);
			return TRUE;
			break;

		default:
		  return 0;
		}
		break;
	}

  return FALSE;
}

/**************************************************************************************
 *                                                                                    *
 *                                    CLEANUP                                         *
 *                                    -------                                         *
 **************************************************************************************/

void Cleanup()
{
	DWORD i;

	for(i=0; i < 5; i++) {
		
		if(RecentFiles[i] != NULL) {

			free(RecentFiles[i]);
		}
	}

	DestroyMenu(popupMenu);
	CoUninitialize();

	delete playback;
	delete skinList;
	delete resizer;
}

/**************************************************************************************
 *                                                                                    *
 * - ParseCmdLine():                                                                  *
 *                                                                                    *
 *   -- Parses the command line and override options                                  *
 *                                                                                    *
 **************************************************************************************/

void ParseCmdLine(char *lpszCmdParam)
{
	char *token;
	char *arg1;

	token = lpszCmdParam;

	while(*token != '\0' && (*token == ' ' || *token == '\t'))
		token++;

	while(*token != '\0') {

		if(*token == '/') {

			token++;
			if(*token == 'f') {

				options.startFullscreen = 1;
				token++;
			}

			continue;
		}

		if(*token == '"') {

			arg1 = ++token;

			while(*token != '\0' && *token != '"') {

				token++;
			}

			*token++ = '\0';

⌨️ 快捷键说明

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