Win API,如何在对话框中写入文本?

Posted

技术标签:

【中文标题】Win API,如何在对话框中写入文本?【英文标题】:Win API, How to write text inside a dialog box? 【发布时间】:2013-08-20 16:42:25 【问题描述】:

我正在创建自己的 WinAPI 小程序,(练习 WIN API 编程) 我想创建一个“关于我们”的框,比如告诉它谁构建了程序,它是哪个版本等等......

我能够成功创建窗口,尽管我只能创建一个空窗口.. 我想知道如何在框中写文字?

这是我创建对话框的函数,其中 ghInstance 是窗口的实例:

void CreateDialogBox(HWND hwnd)

CreateWindowEx(WS_EX_DLGMODALFRAME | WS_EX_TOPMOST,  TEXT("DialogClass"), TEXT("About Us"), WS_VISIBLE | WS_SYSMENU | WS_CAPTION , 100, 100, 200, 150, NULL, NULL, ghInstance,  NULL);

那么我怎样才能在那个空的窗口中写一些东西呢?

谢谢!

【问题讨论】:

【参考方案1】:

这个由微软(MSDN)自己提供的教程应该会派上用场:

http://msdn.microsoft.com/en-us/library/vstudio/bb384843.aspx

注意WM_PAINT 部分。那是为了画简单的文字。

您还可以在窗口上创建控件,例如: C++ Win32 Multiline static label

【讨论】:

您应该使用文本控件以便程序可以访问。实际上,您应该只使用一个系统对话框,它会为您做几乎所有事情。 谢谢,我用的是控件 :) 我不想使用 MessageBox,而是自己写一个 :)【参考方案2】:

如果您使用的是 MS VC++,您可以尝试在资源脚本中编辑预制的 About us。或者你在资源脚本中手工制作。

DialogboxName DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About Us"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    ICON            128,IDC_STATIC,14,14,21,20
    LTEXT           "Program by you, Version 1.0",IDC_STATIC,42,14,114,8,SS_NOPREFIX
    LTEXT           "Copyright (C) 2016",IDC_STATIC,42,26,114,8
    DEFPUSHBUTTON   "OK",IDOK,113,41,50,14,WS_GROUP
END

您可以参考 Charles Petzold Windows 编程书籍,第 5 版。

【讨论】:

以上是关于Win API,如何在对话框中写入文本?的主要内容,如果未能解决你的问题,请参考以下文章

在 Win32 中,如何使用更改颜色对话框来更改 STATIC 文本?

win10系统中安全选项里没有创建文件/写入数据,该如何添加?

如何更改 win32 窗口上的文本?

当用户在“另存为”对话框中指定位置时,如何将文本写入文件?

如何从另一个 QDialog 访问组合框的文本并将其写入该对话框中的 lineEdit

在文本文件中写入文本并使用保存对话框保存