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系统中安全选项里没有创建文件/写入数据,该如何添加?