ウィンドウのサイズを変更するときに、親ウィンドウでウィンドウのコントロールをスケーリングする関数を作成しようとしています。これを実現するためにCreateWindowEx()
、自分の関数に埋め込みました。createscalingwindow
int createscalingwindow (HWND cswpara0,DWORD cswpara1,const CHAR* cswpara2,
const CHAR* cswpara3,DWORD cswpara4,int cswpara5,int cswpara6,int cswpara7,
int cswpara8,HWND cswpara9,HMENU cswpara10,HINSTANCE cswpara11,LPVOID cswpara12)
{
cswpara0 = CreateWindowEx (cswpara1, cswpara2, cswpara3, cswpara4,
cswpara5,cswpara6,cswpara7,cswpara8,
cswpara9,cswpara10,cswpara11,cswpara12);
return 0;
}
winmainでこのコードを変更した後
mainwin = CreateWindowEx(
0,
mainclassname,
"Mafia Online",
WS_OVERLAPPED|WS_CAPTION|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX
|WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
544,
375,
NULL,
playmenu,
hThisInstance,
NULL
);
次のコードに
createscalingwindow (mainwin, 0, mainclassname, "Mafia Online",
WS_OVERLAPPED|WS_CAPTION|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, NULL, playmenu, hThisInstance, NULL);
ShowWindow (mainwin, nCmdShow);
メインウィンドウがまったく表示されなくなります。GetLastError()
埋め込み後に呼び出すと、 CreateWindowEx()
error_successが返されます。
ollydbgでプログラムの両方のバリアントを調べた後、何か奇妙なことに気づきました。プロトタイプを使用したプログラムの実行は、期待どおりに機能しません。プログラムはCreateWindowEx
、まったく別の宛先を呼び出してから、呼び出しから戻ります。
プログラムの実行を期待する方法は次のとおりです(これは使用しないプログラムですcreatescalingwindow
):(新しいユーザーとして画像を投稿することは許可されていないため、modまたは誰かがこれらを修正してくれると便利です。 )
http://s8.postimage.org/qo8tqt5h1/mainnormal.png
実行方法は次のとおりです: http ://s8.postimage.org/fa8ytr7qt/mainweird.png
あなたが私を助けるために尽力してくれたことに感謝しますので、よろしくお願いします。