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);

編集:

3番目の正式なパラメータ「テキスト」は、実際にはdlgアイテムからの情報を格納するグローバルバッファ変数であることを忘れていました:)実際に私の問題は、バッファからクラスのオブジェクト製品にその情報を送信することです

EDIT2:私はそれを理解しました。ベクターに情報を保存したいので、そもそも SendDlgItemMessage 関数は必要ありません。単純にクラス Product のセッター関数を使用し、ベクター内のタイプ Product のオブジェクトを直接 push_back します。

4

2 に答える 2

1

GetDlgItemTextの MSDN ページを見て、特にパラメーター戻り値のセクションを調べてください。3 番目の引数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

テキストは "text" である必要があり、戻り値は GetDlgitemText によって返された文字列のサイズです。

ただし、wx や qt などの標準ライブラリを使用することを強くお勧めします。

于 2013-05-03T17:17:43.207 に答える