Я определил класс, который я хочу использовать для построения окна. Одним из полей является hWnd, и когда функция-член create() называется HWND для созданного окна, там сохраняется. Я перегружен (HWND) отливать вернуть это значение:Тип перегрузки оператора перегрузки HWND возвращает корзину вместо ожидаемого значения элемента
operator HWND() { return(hWnd); }
Моей программа началась сбой, когда я попытался создать дочерние окна на первое, главное окно я создал, и я отслеживал его вниз к нечетному значению, возвращаемому тип. Я определил типичную функцию getter, getHwnd(), которая работает нормально, но typecast просто возвращает корзину. Есть что-то, что мне не хватает?
Определение класса:
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);*/
Не могу сказать, не видя больше кода. –
добавил объявление класса и один пример того, как я его использовал. Если вам нужно больше просто спросить. – Matt