I just noticed that menus of many applications are opening on the wrong side. Have a look at the Calculator on a system not configured for lefty!
It was disturbing to me and I found why it does that. Apparently, Microsoft decided to do that on touch-capable devices. Now that I know the reason, I may understand why.
If you want to change this behavior, you can change the value of the MenuDropAlignment from the Registry (HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows) by setting it to 0.
Or if you would just like to change the behavior in your application (which is a bit strange when you compare to other apps on the same computer), you can use a little snippet like this one (taken from a C# WPF application - App.xaml.cs):
private static readonly FieldInfo _menuDropAlignmentField;
static App()
{
_menuDropAlignmentField = typeof(SystemParameters).GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
System.Diagnostics.Debug.Assert(_menuDropAlignmentField != null);
EnsureStandardPopupAlignment();
SystemParameters.StaticPropertyChanged += SystemParameters_StaticPropertyChanged;
}
private static void SystemParameters_StaticPropertyChanged(object sender, PropertyChangedEventArgs e)
{
EnsureStandardPopupAlignment();
}
private static void EnsureStandardPopupAlignment()
{
if (SystemParameters.MenuDropAlignment && _menuDropAlignmentField != null)
{
_menuDropAlignmentField.SetValue(null, false);
}
}