UnloadKeyboardLayout - что-то пошло не так

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Vladislav, 29 Feb 2012.

  1. Vladislav

    Vladislav New Member

    Joined:
    21 Jun 2011
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Столкнулся со странной проблемой.
    При помощи ф-ции UnloadKeyboardLayout выгружаю раскладку (для примера использую белорусскую), естественно заранее загруженную.
    Code:
    AnsiString dellangID = IntToHex(MAKELANGID(LANG_BELARUSIAN,SUBLANG_DEFAULT),8);
    	HKL dellay = LoadKeyboardLayout(dellangID.c_str(),0);  // определяем хендл раскладки
    
    	if (GetKeyboardLayout(NULL) == dellay)  // проверяем, ежели удаляемая раскладка активна - меняем
    		ActivateKeyboardLayout((HKL)HKL_NEXT,KLF_REORDER);
    
    	UnloadKeyboardLayout(dellay);  // выгружаем
    
    Итого: раскладка меняется, удаляется, НО после этого что-то ломается в циклической смене раскладок. Тобишь, если раньше они менялись по кругу (за первой шла последняя, и наоборот), то теперь она вправо доходит до конца, и дальше не меняется, ну и влево то же самое.
    В мануалах на такое и намёка нет, ясное дело, а гугл как-то особо не помог. Может тут кто чем сможет помочь. Буду весьма благодарен.

    UPD: Забыл упомянуть - после перезагрузки проги всё возвращается на круги своя, что собственно логично.
     
    #1 Vladislav, 29 Feb 2012
    Last edited: 29 Feb 2012