win 32 programming C++

win 32 programming C++

本文关键字:C++ programming win      更新时间:2023-10-16

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

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

我们的想法是有一个管理员配置文件,它可以添加和删除新产品。我想从编辑框中获取信息他将在编辑框中输入数据并将数据保存到类中。问题是我不知道用什么函数从界面对话框中获取信息。我已经尝试过GetDlgItemTextSetDlgItemText (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项目的信息:)所以实际上我的问题是将该信息从缓冲区发送到类的对象Product

我明白了。首先我不需要SendDlgItemMessage函数,因为我想将信息存储在向量上。简单地使用类Product的setter函数,然后在vector
中直接push_back类型Product的对象

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

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

你的文本应该在"text"中,returnvalue是GetDlgitemText返回的字符串的大小。

然而,我强烈建议使用标准库,如wx或qt,它使生活更容易。