- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've created a tool to take a snapshot of a gesture in order to create libraries for gesture recognition. It records finger and joint data from a single frame into an edit box. The user then clicks "save snapshot" to add the snapshot to a library by appending the data to a text file. This might help other developers, but I'm not ready to release it with this annoying bug. It still works, but you have to restart the program after saving one or two gesture
It does so successfully, appending one or two poses, then it crashes. Any insight would be appreciated.
Here's my code:
using namespace std;
BOOL GetSaveSnapshot(HWND hDlg)
{
TCHAR szFile[MAX_PATH] = TEXT("\0");
OPENFILENAME ofn;
HANDLE hFile = INVALID_HANDLE_VALUE;
HWND hEdit = NULL;
DWORD dwTextLen = 0, bytesWritten = 0;
TCHAR *wszEditText = NULL;
char *szEditText = NULL;
hEdit = GetDlgItem(hDlg, IDC_GESTURELIBRARY);
//get the text length of the edit controls contents
dwTextLen = GetWindowTextLength(hEdit);
wszEditText = (TCHAR*)malloc((dwTextLen + 1)*sizeof(TCHAR));
memset(wszEditText, 0, (dwTextLen + 1)*sizeof(TCHAR));
//read edit controls contents into buffer
GetWindowText(hEdit, wszEditText, dwTextLen + 1);
szEditText = (char*)malloc(dwTextLen + 1);
//convert the wide char read from edit control to char
//wcstombs(szEditText, wszEditText, dwTextLen);
String fileName;
fileName = (std::wstring)wszEditText;
fileName += L".txt";
memset(&(ofn), 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hDlg;
ofn.lpstrFile = wszEditText;
ofn.nMaxFile = MAX_PATH;
//ofn.lpstrFilter = L"RSSDK clip (*.rssdk)\0*.rssdk\0All Files (*.*)\0*.*\0";
ofn.lpstrFilter = TEXT("Text (*.txt)\0*.txt\0");
//ofn.lpstrTitle = TEXT("Save File As");
ofn.lpstrTitle = wszEditText;
ofn.Flags = OFN_HIDEREADONLY;
ofn.lpstrDefExt = TEXT("txt");
//get the filename the user wants to save to
ofn.lpstrFileTitle = wszEditText;
if (GetSaveFileName(&ofn))
{
//ofn.lpstrFile contains the full path of the file, get a handle to it
if (GetLibraryState(hDlg)) {
hFile = CreateFile(ofn.lpstrFile, FILE_APPEND_DATA, FILE_SHARE_WRITE, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointer(hFile, 0, 0, FILE_END);
}
else{
hFile = CreateFile(ofn.lpstrFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
}
if (hFile == INVALID_HANDLE_VALUE)
return FALSE;
hEdit = GetDlgItem(hDlg, IDC_MOCAPDATA);
//get the text length of the edit controls contents
dwTextLen = GetWindowTextLength(hEdit);
wszEditText = (TCHAR*)malloc((dwTextLen + 1)*sizeof(TCHAR));
memset(wszEditText, 0, (dwTextLen + 1)*sizeof(TCHAR));
//read edit controls contents into buffer
GetWindowText(hEdit, wszEditText, dwTextLen + 1);
szEditText = (char*)malloc(dwTextLen + 1);
//convert the wide char read from edit control to char
wcstombs(szEditText, wszEditText, dwTextLen);
//save the contents into file
if (WriteFile(hFile, szEditText, dwTextLen, &bytesWritten, NULL))
//free resources
free(wszEditText);
free(szEditText);
CloseHandle(hFile);
}
return TRUE;
}
Link Copied
0 Replies
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page