0
我正在使用MS visual C++ 2010 express編寫一個記事本程序。我需要能夠從我的標籤界面保存文件(每個編輯控件都存儲在一個向量中)。我似乎無法弄清楚如何保存,這取決於用戶可以看到哪個編輯控件(活動標籤)。到目前爲止我嘗試過的所有內容都不保存內容,或者只保存第一個編輯控件。當用戶將新文件添加到選項卡式界面時,它將該編輯控件添加到該矢量的背面。這是我最新的嘗試:Win32從標籤界面保存文本文件
std::vector<HWND>vect;
BOOL SaveTextFileFromEdit(HWND hEdit, LPCTSTR pszFileName)
{
HANDLE hFile;
BOOL bSuccess = FALSE;
hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwTextLength = GetWindowTextLength(hEdit);
if(dwTextLegth > 0)
{
DWORD dwBufferSize = dwTextLength + 1;
LPSTR pszText = (LPSTR)GlobalAlloc(GPTR, dwBufferSize);
if(pszText != NULL)
{
if(GetWindowText(hEdit, pszText, dwBufferSize))
{
DWORD dwWritten;
if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL))
bSuccess = TRUE;
}
GlobalFree(pszText);
}
}
CloseHandle(hFile);
}
return bSuccess;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_FILE_SAVEAS:
{
OPENFILENAME ofn;
char szFileName[ MAX_PATH ] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrDefExt = "txt";
ofn.flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
if(GetSaveFileName(&ofn))
{
HWND hEdit, hTabs;
hTabs = GetDlgItem(hwnd, IDC_MAIN_TAB);
int curTab = TabCtrl_GetCurSel(hTabs);
hEdit = GetDlgItem(hTabs, IDC_MAIN_EDIT);
// This is what i did have: hEdit = GetDlgItem(vect[ curTab ], IDC_MAIN_EDIT);
// Which wasn't saving anything
if(SaveTextFileFromEdit(hEdit, szFileName))
{
// EVERYTHING IS GOOD
}
}
}
break;
}
break;
}
return 0;
}
哇....這樣的noob錯誤:/我知道我是俯視的東西。 – Vince