Hi guys,
I'm new to this forum and fairly new to Windows programming as well. Anyway, I inherited some code from a previous engineer that works fine in 32-bit, but fails in 64-bit. In 64-bit, CreateWindowEx() fails, and GetLastError() returns code 1413, which is "invalid index". I haven't been able to find anything online mentioning any problem with CreateWindowEx() in 64-bit environments.
Any help is appreciated:
I'm not sure if it matters, but there is a thread created off the main thread, which then calls the Create() function above. I can post the code for that if you think it might be a problem.Code://call this function to creat the actual window. bool CPrintWindow::Create(char* szWindowName, DWORD dwStyle, const RECT& rect, HWND hParentWnd, HINSTANCE hInst, char* szClassName, bool registerClass) { //TraceFunc("CPrintWindow::Create()"); if(registerClass) //local register requested { if(!szClassName) szClassName = "DefaultCPrintWindowName"; //if no name specified m_wndClass.lpszClassName = szClassName; m_wndClass.hInstance = hInst; if(!GetClassInfo(hInst, szClassName, &m_wndClass)) { //not yet registered, must register m_classAtom = RegisterClass(&m_wndClass); } } else if(!szClassName) return false; //error, must have a WNDCLASS m_hInstance = hInst; //set the static variable to point to this instance so that //the message loop can find it when it starts up m_lastCPrintWindow = this; m_hWndMain = CreateWindowEx(m_exStyle, szClassName, szWindowName, dwStyle, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, hParentWnd, NULL, m_hInstance, NULL); if(m_hWndMain) return true; //success //Failed! - Give a detailed error message to show what went wrong char szMessage[256]; DWORD result = GetLastError(); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, result, 0, szMessage, 256, 0); MessageBox(NULL, szMessage, "Error", MB_OK); return false; }
Thanks,
Kenneth



LinkBack URL
About LinkBacks


