私はウィンドウを作成するために使用するクラスを定義しました。フィールドの1つがhWndで、メンバー関数create()が呼び出されると、作成されたウィンドウへのHWNDがそこに格納されます。私は私が作成した最初の、メインウィンドウに子ウィンドウを作成しようと、私はによって返される奇数値にそれを追跡する際HWNDの型キャスト演算子のオーバーロードは、期待されるメンバー値の代わりにゴミを返します
operator HWND() { return(hWnd); }
私のプログラムがクラッシュし始めた:私は(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);*/
もっとコードを見ることなくわかりません。 –
は、クラス宣言とそれをどのように使用していたかの1つの例を追加しました。もっと必要なものがあれば尋ねてください。 – Matt