Как вызвать GetAltMonthNames, чтобы заполнить безопасный массив строк месяца иностранного языка? - PullRequest
2 голосов
/ 11 июня 2019

Я видел эту функцию и задавался вопросом, как ее вызвать.Я мог бы захотеть написать компонент и экспортировать эту функцию в COM-клиент, поэтому я хотел заполнить безопасную строку строк (другие типы автоматизации в порядке).Поэтому я хотел использовать интеллектуальный класс ATL.Это то, что у меня есть, консольное приложение.

#include "pch.h"
#include <iostream>
// in pch.h ...
//#include "windows.h"
//#include "comutil.h"
//#include "atlbase.h"
//#include <comdef.h>
//#include "atlsafe.h"


int main()
{
    LCID germany(7);
    LPOLESTR *rgp;
    HRESULT hr;
    hr=::GetAltMonthNames(germany, &rgp); // can't see results
    if (hr != S_OK) return hr;

    CComSafeArray<BSTR> months;
    hr = ::GetAltMonthNames(germany,(LPOLESTR**) &months); //forced compile but no joy
    if (hr != S_OK) return hr;
    std::cout << "Hello World!\n"; 
}

1 Ответ

3 голосов
/ 11 июня 2019

Ваш первый код в порядке, но для немецкого языка не определены альтернативные имена. Попробуйте польский:

LPOLESTR* rgp;
if (SUCCEEDED(GetAltMonthNames(1045, &rgp)))
{
    int i = 0;
    while (rgp[i])
    {
        wprintf(L"%s\n", rgp[i++]);
    }
}

Документация говорит:

Полезно для альтернативных названий месяцев хиджры, польского и русского.

...