Я определил класс, который хочу использовать для построения окна.Одним из полей является hWnd, и когда функция-член create () вызывается как HWND для созданного окна, оно там сохраняется.Я перегрузил приведение (HWND), чтобы вернуть это значение:
operator HWND() { return(hWnd); }
Моя программа перестала работать, когда я попытался создать дочерние окна для первого главного окна, которое я создал, и отследил его до нечетного значения, являющегосявозвращается по типу.Я определил типичную функцию getter, getHwnd (), которая работает нормально, но типизация просто возвращает мусор.Я что-то упускаю?
Определение класса:
class WindowBuilder
{
public:
WindowBuilder(FullWindow &fullWindow);
operator HWND() { return(hWnd); }
void SetCaption(char const * caption) { windowName = caption; }
void SetMenu(int resourceId);
void SetRender(RECT rect, HWND parent);
void SetButton(HWND parent);
void Create();
void Show(int nCmdShow = SW_SHOWNORMAL);
HWND getHwnd () { return(hWnd); }
protected:
FullWindow & window;
HWND hWnd;
char const * windowName;
DWORD style;
int x;
int y;
int width;
int height;
HWND hWndParent;
HMENU hMenu;
void * data;
};
Пример вызова:
FullWindow renderWindowClass("STATIC", GlobalInstance, WndProc);
renderWindow = new WindowBuilder(renderWindowClass);
renderWindow->SetRender(rect,mainWindow->getHwnd()); // used to be (HWND)mainWindow
renderWindow->Create();
renderWindow->Show(CmdShow);
/*RenderWindow = ::CreateWindow("STATIC", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
DEFAULT_BUTTON_WIDTH, 0, rect.right-rect.left-DEFAULT_BUTTON_WIDTH,
rect.bottom - rect.top, Window, NULL, hInstance, NULL);*/