Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Please help. How do i use acmFormatEnum?

Please help. How do i use acmFormatEnum?

Scheduled Pinned Locked Moved C / C++ / MFC
questionhelptutorial
2 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    redeemer
    wrote on last edited by
    #1

    I'm trying to enumerate all the different formats for a specific format type, but every time i run the acmFormatEnum function it returns MMSYSERR_INVALPARAM meaning "At least one parameter is invalid.". Anyone know how to use that function? Anyone have some examples? All help is greatly appreciated, here's my code. I start by running the TagEnum function:

    ACMFORMATTAGDETAILS acmTagDetails;

    void TagEnum()
    {
    HACMDRIVER hAcm;

    acmDriverOpen(&hAcm, id, 0);
    
    acmTagDetails.cbStruct = sizeof(ACMFORMATTAGDETAILS);
    acmFormatTagEnum(hAcm, &acmTagDetails, acmTagCallback, NULL, 0);
    
    acmDriverClose(hAcm, 0);
    

    }

    BOOL WINAPI acmTagCallback(HACMDRIVERID hadid, LPACMFORMATTAGDETAILS paftd, DWORD dwInstance,DWORD fdwSupport)
    {
    ACMFORMATDETAILS acmFormat;
    WAVEFORMATEX waveFormat = { 0 };
    HACMDRIVER hAcm;

    memset(&acmFormat, 0, sizeof(acmFormat));
    acmFormat.cbStruct = sizeof(acmFormat);
    acmFormat.cbwfx = sizeof(waveFormat);
    acmFormat.pwfx = &waveFormat;
    acmFormat.dwFormatTag = acmTagDetails.dwFormatTag;
    
    waveFormat.wFormatTag = acmTagDetails.dwFormatTag;
    
    acmDriverOpen(&hAcm, hadid, 0);
    acmFormatEnum(hAcm, &acmFormat, formatCallback, NULL, ACM\_FORMATENUMF\_WFORMATTAG);
    acmDriverClose(hAcm, 0);
    
    return TRUE;
    

    }

    BOOL WINAPI formatCallback(HACMDRIVERID hadid, LPACMFORMATDETAILS pafd, DWORD dwInstance, DWORD fdwSupport)
    {
    ACMDRIVERDETAILS details;

    details.cbStruct = sizeof(details);
    
    acmDriverDetails(hadid, &details, NULL);
    
    SendMessage(GetDlgItem(ghWnd, IDC\_FORMATS), LB\_INSERTSTRING, 0, (LPARAM)details.szLongName);
    
    return TRUE;
    

    }

    id is a HACMDRIVERID holding a valid driver id of a driver. Anyone have a clue what could be wrong or have some examples? All help is apprecaited. -Rune Svendsen

    M 1 Reply Last reply
    0
    • R redeemer

      I'm trying to enumerate all the different formats for a specific format type, but every time i run the acmFormatEnum function it returns MMSYSERR_INVALPARAM meaning "At least one parameter is invalid.". Anyone know how to use that function? Anyone have some examples? All help is greatly appreciated, here's my code. I start by running the TagEnum function:

      ACMFORMATTAGDETAILS acmTagDetails;

      void TagEnum()
      {
      HACMDRIVER hAcm;

      acmDriverOpen(&hAcm, id, 0);
      
      acmTagDetails.cbStruct = sizeof(ACMFORMATTAGDETAILS);
      acmFormatTagEnum(hAcm, &acmTagDetails, acmTagCallback, NULL, 0);
      
      acmDriverClose(hAcm, 0);
      

      }

      BOOL WINAPI acmTagCallback(HACMDRIVERID hadid, LPACMFORMATTAGDETAILS paftd, DWORD dwInstance,DWORD fdwSupport)
      {
      ACMFORMATDETAILS acmFormat;
      WAVEFORMATEX waveFormat = { 0 };
      HACMDRIVER hAcm;

      memset(&acmFormat, 0, sizeof(acmFormat));
      acmFormat.cbStruct = sizeof(acmFormat);
      acmFormat.cbwfx = sizeof(waveFormat);
      acmFormat.pwfx = &waveFormat;
      acmFormat.dwFormatTag = acmTagDetails.dwFormatTag;
      
      waveFormat.wFormatTag = acmTagDetails.dwFormatTag;
      
      acmDriverOpen(&hAcm, hadid, 0);
      acmFormatEnum(hAcm, &acmFormat, formatCallback, NULL, ACM\_FORMATENUMF\_WFORMATTAG);
      acmDriverClose(hAcm, 0);
      
      return TRUE;
      

      }

      BOOL WINAPI formatCallback(HACMDRIVERID hadid, LPACMFORMATDETAILS pafd, DWORD dwInstance, DWORD fdwSupport)
      {
      ACMDRIVERDETAILS details;

      details.cbStruct = sizeof(details);
      
      acmDriverDetails(hadid, &details, NULL);
      
      SendMessage(GetDlgItem(ghWnd, IDC\_FORMATS), LB\_INSERTSTRING, 0, (LPARAM)details.szLongName);
      
      return TRUE;
      

      }

      id is a HACMDRIVERID holding a valid driver id of a driver. Anyone have a clue what could be wrong or have some examples? All help is apprecaited. -Rune Svendsen

      M Offline
      M Offline
      Mike Nordell
      wrote on last edited by
      #2

      Doesn't the MSDN sample ACMapp display how to do this???

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups