我的問題很簡單(至少我認爲是這樣)。我想從文本輸入中捕獲一個值並將其存儲在一個txt文件中。現在我正在使用此代碼,並且操作按鈕用於在單擊時將文件內容寫入文件。但是我得到的是在文件中註冊的按鈕的值。將文本字段中的值存儲在.txt中
case WM_CREATE:{
CreateWindow(
TEXT("EDIT"), TEXT("value"),
WS_VISIBLE | WS_CHILD | WS_BORDER,
190, 50, 50, 20,
hwnd, (HMENU) NULL, NULL, NULL
);
CreateWindow(
TEXT("BUTTON"), TEXT("Ok"),
WS_VISIBLE | WS_CHILD,
250, 10, 30, 20,
hwnd, (HMENU) ID_BTN, NULL, NULL
);
break;
}
case WM_COMMAND: {
if (LOWORD(wParam) == ID_BTN) {
std::ofstream outfile;
outfile.open("C:\\file.txt", std::ios_base::app);
outfile << ID_BTN;
outfile.close();
MessageBox(hwnd, "Done!", "Title", MB_ICONINFORMATION);
return 0;
}
break;
}
謝謝。
編輯:@ZanLynx,我試圖做你所說的話,但是編譯器一直說hwndText未聲明,當它。
107 `hwndText' undeclared (first use this function)
下面的代碼
#define ID_BTN 1
#define ID_TXT 2
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
HWND hwndText = CreateWindow(
TEXT("Edit"), TEXT("Write here"),
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
190, 10, 100, 20,
hwnd, (HMENU) ID_TXT, NULL, NULL
);
CreateWindow(
TEXT("BUTTON"), TEXT("OK"),
WS_VISIBLE | WS_CHILD,
250, 10, 30, 20,
hwnd, (HMENU) ID_BTN, NULL, NULL
);
break;
}
case WM_COMMAND:
{
if (LOWORD(wParam) == ID_BTN)
{
LRESULT iTextSize = SendMessage(hwndText, EM_GETLIMITTEXT, 0, 0);
char *szText = new char[iTextSize];
SendMessage(hwndText, WM_GETTEXT, iTextSize, (LPARAM)szText);
std::ofstream outfile;
outfile.open("C:\\f.txt", std::ios_base::app);
outfile << szText;
outfile.close();
MessageBox(hwnd, "Done!", "Title", MB_ICONINFORMATION);
return 0;
};
break;
}
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
您正在將ID_BTN寫入outfile。你期望會發生什麼? –
你可以發送你的編輯框一個'WM_GETTEXT'消息。 – chris
您的hwndText僅在大小寫塊內聲明。您需要使其成爲全局的,或使其成爲某種應用程序結構的一部分,這可能是全局或堆分配。在任何情況下,它都需要在消息之間持續存在並且可以被所有相關功能訪問。 –