c++ - 如何在 C++ 资源脚本中将项目添加到组合框

标签 c++ winapi resources

我正在使用 Windows API 创建一个字体对话框,其中包含 C++ 中的字体选择/样式/大小调整

我在资源脚本中添加了文本和组合框,但我对如何向组合框添加项目并处理其单击事件感到困惑。我在互联网上搜索但找不到答案。

我的代码是

#include "Resource.h"
#include <windows.h>
#define IDD_DLGFIRST 101
#define IDC_SCROLLBARV                  1010
#define COMBOX1 1
#define COMBOX2 2
#define COMBOX3 3
IDD_DLGFIRST DIALOG 200, 200, 300, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Font Color"
FONT 8, "MS Shell Dlg"
BEGIN
     LTEXT "Font",10,10,15,80,20
     COMBOBOX COMBOX1,10,30,80,100, CBS_SIMPLE | WS_VSCROLL | WS_TABSTOP
     LTEXT "Font Style",11,110,15,80,20
     COMBOBOX COMBOX2,110,30,80,100, CBS_SIMPLE | WS_VSCROLL | WS_TABSTOP
     LTEXT "Font Size",11,210,15,80,20
     COMBOBOX COMBOX3,210,30,80,100, CBS_SIMPLE | WS_VSCROLL | WS_TABSTOP
END

最佳答案

您无法通过资源脚本将项目添加到组合框。该脚本只能定义ComboBox 本身及其特性。您需要编写代码来在运行时处理 ComboBox 项目。

例如,在对话框的 WndProc 过程中,处理 WM_INITDIALOG发送消息CB_ADDSTRING发送到 ComboBox 的 HWND 的消息,您可以从 Win32 GetDlgItem() 获取该消息功能。

为了处理来自 ComboBox 的点击和其他事件,它们会以 WM_COMMAND 的形式发送到对话框的 WndProc。通知,例如 CBN_SELCHANGE .

仅供引用,Windows 有自己的内置 Font Dialog Box ,您可以使用 Win32 ChooseFont() 调用它函数,或 MFC CFontDialog类等

关于c++ - 如何在 C++ 资源脚本中将项目添加到组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48469273/

相关文章:

c# - 使用 P/Invoked GlobalSize 时堆已损坏

c++ - 来自不同线程的同步输出流

java - 良好的 Java 社区和资源

c++ - 使用 C++11 异步功能的管道数据流

c++ - 用于 Objective C 的 IDE

c++ - 如何仅在对象恰好有成员函数时才调用它?

winapi - 开发具有一些图形编辑器功能的小型且快速的 GUI 应用程序的最佳组合是什么 - C++ 和(VB 或 Win32)?

c++ - 多线程设计,C++保护全局成员

java - 什么是 JAX-RS 资源?

java - 找不到资源包异常