0

我在用 C++ 为在线商店编写 win32 应用程序时遇到了这个特殊问题,但我不确定是否可以解释一下:

我有这个class Product{};,它应该保存商店中每个独特产品的信息(类型、名称、价格、数量)(我已将其编写为普通类,但不确定是否必须编写为 mfc 类?)。我将制作一个包含商店中所有可用对象(产品)的向量。

这个想法是有一个管理员配置文件,允许添加新产品和删除它们。所以我想从那些他将要输入数据并将该数据保存到类的编辑框中获取该信息。问题是我不知道使用什么函数从界面对话框中获取信息。我试过GetDlgItemTextand SetDlgItemText( SendDlgMessage) 但返回的类型是int,所以我想这是我应该使用的其他东西?

INT_PTR CALLBACK Seller(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)

{
case WM_INITDIALOG:
    return (INT_PTR)TRUE;

case WM_COMMAND:
    switch (LOWORD(wParam))
    {
    case IDC_BUTTON1: {
        Product obj;
        GetDlgItemText(hDlg,IDC_EDIT3|IDC_EDIT2,text,20);
            SendDlgItemMessage(hDlg,obj.SetType(text),LB_ADDSTRING,0,(long)text);

编辑:

我忘了提到第三个形式参数“text”实际上是一个全局缓冲区变量,我在其中存储来自 dlg 项的信息 :) 所以实际上我的问题是将该信息从缓冲区发送到类的对象产品

EDIT2:我想通了。首先不需要 SendDlgItemMessage 函数,因为我想将信息存储在向量中。只需使用类 Product 的 setter 函数,然后直接 push_back 向量中的 Product 类型的对象

4

2 回答 2

1

查看GetDlgItemText的 MSDN 页面并花点时间研究它,尤其是参数返回值部分。请注意,第三个参数 ,lpString被标记为输出(_Out_[out]在文档中)。您提供一个缓冲区来存储对话框项中的文本,并将其存储在那里。该函数的返回值用于告诉您实际存储了多少个字符。

于 2013-05-03T17:17:52.800 回答
0

看这里:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms645489%28v=vs.85%29.aspx

您的文本应该在“文本”中,返回值是 GetDlgitemText 返回的字符串的大小。

但是我强烈建议使用像 wx 或 qt 这样的标准库,它让生活更轻松。

于 2013-05-03T17:17:43.207 回答