Microsoft KB Archive/126990

= Mode Property of MCIWNDX.VBX Returns Localized Strings =

Article ID: 126990

Article Last Modified on 10/28/2003

-

APPLIES TO


 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Video for Windows Development Kit 1.1

-



This article was previously published under Q126990



SUMMARY
The MCIWNDX.VBX control distributed with the Video for Windows Development Kit version 1.1, has a Mode property containing a localized string that tells you the current state of the control. When this control is used on versions of Windows other than those that use the English language, such as German or French, the Mode is automatically translated into that language. Because of this feature, you must not use a hard coded string literal when checking the Mode property. As an alternative, you can call the Multimedia API mciSendCommand function. This article shows you how.



MORE INFORMATION
To determine the state of the MCIWNDX control, you can check the Mode property. However, both the Mode property and the Mode argument to the ModeChange event are represented as localized strings. For example, if the control were playing back a video clip and the Mode property was displayed in the US version of Windows, the word "running" would be displayed. However, in the German version of Windows, the word "Wiedergabe" would be displayed. This makes it impossible to write code like the following that works in all versions of Windows: If MCIWnd1.Mode = "playing" Then ...  End If The solution is to use the multimedia API mciSendCommand function to get the current mode of the MCI device associated with the MCIWndx control. The mciSendCommand function returns the state of the device as a number instead of a string. The numbers returned by mciSendCommand are constant across all versions of Windows. An example of calling mciSendCommand is shown below.

Step-by-Step Example
 Start a new project in Visual Basic. Form1 is created by default. Add the MCIWNDX.VBX to your project.  Create a new Module (Module1) to the project and add the following code to the general declarations section: Global Const MCI_STATUS = &H814 Global Const MCI_STATUS_ITEM = &H100& Global Const MCI_STATUS_MODE = &H4&

Global Const MCI_STRING_OFFSET = 512 Global Const MCI_MODE_NOT_READY = (MCI_STRING_OFFSET + 12) Global Const MCI_MODE_STOP = (MCI_STRING_OFFSET + 13) Global Const MCI_MODE_PLAY = (MCI_STRING_OFFSET + 14) Global Const MCI_MODE_RECORD = (MCI_STRING_OFFSET + 15) Global Const MCI_MODE_SEEK = (MCI_STRING_OFFSET + 16) Global Const MCI_MODE_PAUSE = (MCI_STRING_OFFSET + 17) Global Const MCI_MODE_OPEN = (MCI_STRING_OFFSET + 18)

Type MCI_STATUS_PARMS dwCallback As Long dwReturn As Long dwItem As Long dwTrack As Long End Type

' Enter the following declaration as one, single line: Declare Function mciSendCommand Lib "mmsystem" (ByVal udeviceid As Integer, ByVal uMessage As Integer,     ByVal dwParam1 As Long, dwParam2 As Any) As Long   Add the following function to the module: Function GetMCIWndxMode (MCIControl As MCIWnd) As Long Dim Info As MCI_STATUS_PARMS Dim Ret As Long

Info.dwItem = MCI_STATUS_MODE Info.dwCallback = 0 Info.dwTrack = 0

' Enter the following two lines as one, single line: Ret = mciSendCommand(MCIControl.DeviceID,MCI_STATUS,MCI_STATUS_ITEM,Info)

GetMCIWndxMode = Info.dwReturn End Function  Add a command button (Command1) and an MCIWNDX control (MCIWnd1) to Form1.  In the click event of Command1, add this code: Sub Command1_Click Dim status As Long

' Load an AVI file into the control: MCIWnd1.Filename = "c:\winnt35\clock.avi" ' Get the status: status = GetMCIWndxMode(MCIWnd1) If status = MCI_MODE_STOP Then  ' is it playing or stopped Print "stopped" End If  End Sub  Press the F5 key to run the program. Click the Command1 button to load CLOCK.AVI into the control and see "stopped" printed on the form.</li></ol>

Additional query words: 3.00 localize foreign

Keywords: KB126990

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.