こんばんわ、またお世話になります。
現在はVisualC++2008EEのWin32アプリケーションのテンプレートを使って作成しています。
先ず表示したウィンドウを二分割して左側にツリー、右側にテキスト入力という形にしました。
そしてソースも分割しようと、ツリーを表示している場所を別の場所に移したのですが、ツリーが表示されません。
何か、ちゃんと機能させる手立てはないでしょうか?
分かりにくいと思いますので、そのまま貼り付けておきます。
tree.cppが移した部分です。DxLib.hなどのあるフォルダは含まれてません。
ソースの分割
Re:ソースの分割
CreateWindowExのhWndには親窓のハンドルが入るとのことなので、
HWND GetParent(HWND hWnd);
をtree.cppに入れてハンドルを取得しようとしたのですが、再定義されていますとエラーになりました。
色々と順番を変えてみます。
staticの方については、今調べています。
取りあえずexternにしたら「外部シンボル ""struct HWND__ * hTree" (?hTree@@3PAUHWND__@@A)" は未解決です。」
と出ました。
------
HWND extern hTree; // ツリービューのハンドル
HWND static hTree;
------
としたら実行できたのですが、これでいいのかと疑問に思います。(上が未解決なので表示はされませんが)
参考にしたURL
http://gurigumi.s349.xrea.com/programmi ... plit1.html
http://gurigumi.s349.xrea.com/programmi ... view1.html
HWND GetParent(HWND hWnd);
をtree.cppに入れてハンドルを取得しようとしたのですが、再定義されていますとエラーになりました。
色々と順番を変えてみます。
staticの方については、今調べています。
取りあえずexternにしたら「外部シンボル ""struct HWND__ * hTree" (?hTree@@3PAUHWND__@@A)" は未解決です。」
と出ました。
------
HWND extern hTree; // ツリービューのハンドル
HWND static hTree;
------
としたら実行できたのですが、これでいいのかと疑問に思います。(上が未解決なので表示はされませんが)
参考にしたURL
http://gurigumi.s349.xrea.com/programmi ... plit1.html
http://gurigumi.s349.xrea.com/programmi ... view1.html
Re:ソースの分割
>CreateWindowExのhWndには親窓のハンドルが入るとのことなので
ツリービューを作るのに必要なその親窓のハンドルは main.cpp側で生成された
ウインドウハンドルです。
tree関数は親窓のプロシージャである WndProc関数の WM_CREATEののところで
処理されていますよね?
WndProc関数では自分(親窓)のウインドウハンドルの情報を持っていますので、そのまま
tree関数の引数にハンドルを入れるようにすれば、態々グローバル変数に頼らなくても
tree関数内でウインドウハンドルを取得できます。
あと、グローバル変数とローカル変数で名前を同じにするのは止めましょう。
>取りあえずexternにしたら
何の為に GLOBALというマクロが存在しているのか考えてみて下さい。
>static hTree
そこで staticをつけるとインクルードしたソース毎に異なる静的変数になります。
tree.cppで使われる hTreeと main.cppでツリーに内容を書き込む際に使う hTreeが
別物の変数になってしまいますよ。
ツリービューを作るのに必要なその親窓のハンドルは main.cpp側で生成された
ウインドウハンドルです。
tree関数は親窓のプロシージャである WndProc関数の WM_CREATEののところで
処理されていますよね?
WndProc関数では自分(親窓)のウインドウハンドルの情報を持っていますので、そのまま
tree関数の引数にハンドルを入れるようにすれば、態々グローバル変数に頼らなくても
tree関数内でウインドウハンドルを取得できます。
あと、グローバル変数とローカル変数で名前を同じにするのは止めましょう。
>取りあえずexternにしたら
何の為に GLOBALというマクロが存在しているのか考えてみて下さい。
>static hTree
そこで staticをつけるとインクルードしたソース毎に異なる静的変数になります。
tree.cppで使われる hTreeと main.cppでツリーに内容を書き込む際に使う hTreeが
別物の変数になってしまいますよ。