SOL9 Sample: SolMediaPlayer

SOL9 2.0 Samples

1 Screenshot


2 Source code

/*
 * SolMediaPlayer.cpp 
 * Copyright (c) 2015 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */



// SOL9 2.0
// 2011/02/21 This is a sample program to use SOL::MediaPlayer to embed a 
// WindowsMediaPlayer into your own application window.

#define COMMONCONTROLS_V6

#include <sol\ApplicationView.h>
#include <sol\ole\MediaPlayer.h>
#include <sol\FileDialog.h>
#include <sol/Stdio.h>
#include "resource.h"

namespace SOL {

/**
 * class SolMediaPlayer
 */
class SolMediaPlayer :public ApplicationView {
private:
  MediaPlayer mediaPlayer;
  FileDialog fileDialog;

public:
  /**
   * Constructor
   */
  SolMediaPlayer(Application& applet, const TCHAR* name, Args& args)
  :ApplicationView(applet, name, 
      args.set(XmNbackground, (ulong)(COLOR_BTNFACE+1))  )
  {
    Args ar;

    ar.set(XmNclassStyle, CS_DBLCLKS);
    ar.set(XmNstyle, WS_CHILD|WS_VISIBLE|WS_CHILD | WS_VISIBLE);
    mediaPlayer.create(this, _T(""), ar);

    ar.reset();
    ar.set(XmNfilter, _T("Windows Media(*.wmv *.wma *.mp3)\0 *.wmv;*.wma;*.mp3\0"));
    fileDialog.create(this, _T("FileSelection"), ar);

    addCallback(XmNmenuCallback, IDM_OPEN, this, (Callback)&SolMediaPlayer::open, NULL);

    addCallback(XmNmenuCallback, IDM_EXIT, this, (Callback)&SolMediaPlayer::exit, NULL);
    addCallback(XmNmenuCallback, IDM_VERSION, this, (Callback)&SolMediaPlayer::version, NULL);

    addEventHandler(WM_SIZE, this, (Handler)&SolMediaPlayer::size, NULL);
    addEventHandler(WM_CLOSE, this, (Handler)&SolMediaPlayer::close, NULL);

    restorePlacement();
  }

private:
  /**
   * Callback for [Open] menu.
   */
  void  open(Action& action) {
    Args ar;
    
    TCHAR dir[MAX_PATH];
    memset(dir, (TCHAR)0, CountOf(dir));

    //Restore a previously selected folder from a registry(profile of 
    //this application) for fileDialog
    if (restoreFileFolder(dir, CountOf(dir))) {
      ar.set(XmNdirectory, dir);
      fileDialog.setValues(ar);
    }
  
    if(fileDialog.open()){
      TCHAR title[MAX_PATH];
      TCHAR* filename = fileDialog.getFileName();
      TCHAR* ftitle = fileDialog.getFileTitle();
    
      saveFileFolder(filename);
      mediaPlayer.play(filename);

      _stprintf_s(title, CountOf(title), _T("%s - SolMediaPlayer"), filename);

      setText(title);
    }
  }

public:
  /**
   * WM_SIZE event handler.
   */
  long size(Event& event)
  {
    LPARAM l = event.getLParam();
    mediaPlayer.reshape(0, 0, LOWORD(l), HIWORD(l));
    return 0;
  }

public:
  long close(Event& event)
  {
    savePlacement();
    return defaultProc(event);
  }

private:
  void version(Action& action)
  {
    showMessageDialog(_T("Version"),
      _T("SolMediaPlayer Version 1.0.0.1\r\nCopyright(C) 2011 Antillia.com"),
      MB_OK|MB_ICONINFORMATION);
  }

};

}

//////////////////////////////////////
// SolMediaPlayer.exe
//
//  Program entry point.
void  Main(int argc, TCHAR** argv)
{
  OleInitialize(NULL);

  ModuleFileName module(argv[0]);
  const TCHAR* name = module.getFileName();

  try {
    Application applet(name, argc, argv);

    Args args;
    args.set(XmNclassStyle, CS_DBLCLKS);
    args.set(XmNexStyle, WS_EX_CONTROLPARENT|WS_EX_TRANSPARENT);

    SolMediaPlayer browser(applet, name, args);
    browser.realize();

    applet.run();

  } catch (Exception& ex) {
    caught(ex);
  } catch (...) {
    caught(UnknownException());
  }
  OleUninitialize();
}


Last modified: 1 Feb 2017

Copyright (c) 2017 Antillia.com ALL RIGHTS RESERVED.