- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
MFC 提供了一个名为DDX_CBIndex
的函数来获取当前选定的ComboBox 项的索引。但在大多数情况下,我对索引不感兴趣,相反我想获得 32 位应用程序提供的值,这是我在调用 GetItemData
时获得的。因此,我总是必须覆盖 OnOk
并使用 GetCurSel
和 GetItemData
来检索此值。
是否有更优雅的方式来获取/设置 CComboBox 项目而不取决于索引但取决于应用程序提供的 32 位值?
谢谢!
最佳答案
我有一个部分解决这个问题的方法,但是根据@taspeotis 的建议,我写了这个,它似乎工作得很好。
template <class T>
void DDX_CBData(CDataExchange* pDX, int nIDC, T& data)
{
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
if (pDX->m_bSaveAndValidate)
{
int index = static_cast<int>(::SendMessage(hWndCtrl, CB_GETCURSEL, 0, 0L));
data = (index == CB_ERR ? NULL : reinterpret_cast<T>(::SendMessage(hWndCtrl, CB_GETITEMDATA, index, 0L)));
}
else
{
int count = static_cast<int>(::SendMessage(hWndCtrl, CB_GETCOUNT, 0, 0L));
for (int i = 0; i != count; ++i)
{
if (reinterpret_cast<T>(::SendMessage(hWndCtrl, CB_GETITEMDATA, i, 0L)) == data)
{
::SendMessage(hWndCtrl, CB_SETCURSEL, i, 0L);
return;
}
}
::SendMessage(hWndCtrl, CB_SETCURSEL, -1, 0L);
}
}
关于windows - 如何在 CComboBox 控件中正确使用 DDX(数据交换)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5403509/
DDX 技术是为将资源与类成员链接起来而创建的(例如)。在我的解决方案中,我需要在不存在于类成员 CCtreeCtrl 的资源中的 myCCtreeCtrl(CCtreeCtrl 实例)之间建立连接。
为了初始化对话框中的控件并收集用户输入,我使用了 DDX .如何更改程序以使用逗号而不是点显示 float (最好不更改语言环境)? 该程序设置了“C”区域设置,如果我更改区域设置,我必须注意每个 a
我正在使用 ColdFusion 生成 PDF 并创建一个 DDX 文件,该文件将在完成后为该文件生成 TOC。我可以为 TOC 页面配置和格式化标题,但无法在任何地方找到任何关于如何更改实际生成的
MFC 提供了一个名为DDX_CBIndex 的函数来获取当前选定的ComboBox 项的索引。但在大多数情况下,我对索引不感兴趣,相反我想获得 32 位应用程序提供的值,这是我在调用 GetItem
我似乎无法理解这一点,二维纹理/数组中沿 U 或 V 坐标的导数/变化不应该是一维变量,因为我们仅沿 ddx(U 坐标)或 ddy(V 坐标)检查它吗? 最佳答案 这里有 4 个不同的偏导数:du/d
我是一名优秀的程序员,十分优秀!