2013-05-03 23 views
0

我有這個特殊的問題,而編程在C++網上商店Win32應用程序,但我不知道如果我能解釋一下就OK了:贏得32編程C++

我有這個class Product{};,是應該持有商店中每個獨特產品的信息(類型,名稱,價格,金額)(我把它寫成一個普通的類,並不確定是否必須寫作mfc類?)。我將製作一個包含商店所有可用對象(產品)的矢量。

這個想法是有一個管理員配置文件,允許添加新產品並刪除它們。所以我想從那些他將要輸入數據並將這些數據保存到課堂的編輯框中獲取這些信息。問題是我不知道用什麼函數從界面對話框中獲取信息。我試過GetDlgItemTextSetDlgItemTextSendDlgMessage),但返回的類型是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); 

編輯:

我忘了提的是,第三次正式參數「文本」,實際上是在那裏我存儲從DLG項目信息的全球緩衝區變量:)所以實際上我的問題是與發送該從緩衝區到類的對象的信息產品

編輯2:我想通了。由於我想將信息存儲在向量中,因此我不需要首先使用SendDlgItemMessage函數。只需將使用該類產品的setter函數,然後直接的push_back產品類型的對象向量

+3

你爲什麼要在Win32中編寫而不是使用GUI框架來讓你的生活變得更加困難?它是你的代碼,而不是繼承的代碼庫呢? – Devolus 2013-05-03 17:15:27

+0

@Devolus:爲什麼不呢? – Xearinox 2013-05-03 17:26:13

+2

由於其複雜和容易出錯。作爲一個學習經驗,如果你想了解Windows的內部運作情況,這並不壞,但我絕對不會這樣做一個商業項目。在這些GUI庫中,有大量的幫助類讓您的生活更輕鬆,代碼更易於維護。 – Devolus 2013-05-03 17:28:30

回答

1

看一看的MSDN頁面GetDlgItemText並花些時間去研究它,尤其是參數返回值部分。請注意,第三個參數lpString標記爲輸出(文檔中爲_Out_[out])。您提供了一個緩衝區,來自對話框項目的文本將被存儲,並存儲在那裏。函數的返回值用於告訴您實際存儲了多少個字符。

+0

以及SendDlgMessage的問題更多,我熟悉Get函數。我忘了提及第三個形式參數「text」實際上是一個全局緩衝區變量,用於存儲來自dlg項的信息:) – user2272017 2013-05-03 17:30:05

+0

您的意思是[SendDlgItemMessage](http://msdn.microsoft.com/en-us/庫/窗/臺式機/ ms645515%28V = vs.85%29.aspx)?在這種情況下,您要發送的消息是[WM_GETTEXT](http://msdn.microsoft.com/en-us/library/windows/desktop/ms632627%28v=vs.85%29.aspx)。正如該消息的文檔所述,使'wParam'成爲緩衝區的最大大小,並使'lParam'成爲指向緩衝區的指針。 – 2013-05-03 17:37:14

+0

是的確切 謝謝你我會嘗試它 – user2272017 2013-05-03 17:49:41