以C ++格式打印日期和时间

时间:2017-04-05 18:07:23

标签: winforms c++-cli

你可以解决我的问题吗? 我在text中有一个my Form字段。我想用字符串打印日期和时间,我的意思是,光标在哪里。

我得到了这个课程:

#include <Windows.h>
//Russian letters are okay for this
private: System::Void времяИДатаToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {


    SYSTEMTIME sys_t;
    GetSystemTime(&sys_t);
    char szFormat[] = "MMMM";
    char Buffer[16];
    sys_t.wMonth = 1; 
    GetDateFormat(LOCALE_USER_DEFAULT, 0, &sys_t, szFormat, Buffer, 256);
}
};

我想使用MessageBox::Show(),但这不是我的问题吗? 你能为此提出一些建议吗?

感谢。

2 个答案:

答案 0 :(得分:2)

标准警告:虽然可以用C ++ / CLI编写应用程序的主体,甚至可以使用WinForms在C ++ / CLI中编写GUI,但不建议这样做。 C ++ / CLI适用于互操作场景:C#或其他.Net代码需要与非托管C ++接口,C ++ / CLI可以提供两者之间的转换。对于主要开发,如果您需要托管代码,建议将C#与WinForms或WPF一起使用,如果您想要非托管,则建议使用带有MFC的C ++。

好的,那说:你已经拥有了完整的.Net库,为什么不使用它呢?

void времяИДатаToolStripMenuItem_Click(Object^ sender, EventArgs^ e)
{
    DateTime now = DateTime::Now;
    String^ dateString = now.ToString("MMMM");
}

答案 1 :(得分:0)

假设您的文本字段名为textField,请使用:

textField->Text = new string(Buffer);

另外,您致电

GetDateFormat(LOCALE_USER_DEFAULT, 0, &sys_t, szFormat, Buffer, 256);

错了。传递16,而不是256作为最后一个参数(因为您声明Buffer有16个字符)。