@Cory: correct. Fixed Code:
HWND hWnd = /* from somewhere */; int nLen = GetWindowTextLength(hWnd) + 1; WCHAR* lpszText = (WCHAR*)malloc(nLen*sizeof(WCHAR)); // std::wstring str; str.resize(nLen); nLen = GetWindowText(hWnd,lpszText,nLen); // str.resize(nLen=GetWindowText(hWnd,&str[0],nLen)); sqlite3_bind_text16(stmt,1,lpszText,nLen*sizeof(WCHAR),SQLITE_TRANSIENT); // (.., str.data(),nLen*sizeof(std::wstring::value_type),SQLITE_TRANSIENT); free(lpszText); // not needed for std::wstring When you first time create the database, use sqlite3_open() to store the data as utf8. I believe bind_text16() will convert from utf16 to utf8 for you. See: - GetWindowTextLength() http://msdn.microsoft.com/en-us/library/ms633521.aspx - GetWindowText() http://msdn.microsoft.com/en-us/library/ms633520.aspx - sqlite3_bind_text16() http://www.sqlite.org/c3ref/bind_blob.html Note: - You need your project to be compiled in UNICODE On Fri, Dec 17, 2010 at 12:24 AM, Cory Nelson <phro...@gmail.com> wrote: > > Just a quick note -- TCHAR is not always UTF-16, and > sqlite3_bind_text16 takes a void* so it will happily take whatever you > give it. You should be using wchar_t directly instead of TCHAR, so an > error can be caught when you use GetWindowText. > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users