*lpCmdLine = 0 ? – プログラミング – Home

通知
すべてクリア

*lpCmdLine = 0 ?


ちゃまいえ
 ちゃまいえ
(@ちゃまいえ)
ゲスト
結合: 19年前
投稿: 33
Topic starter  

VC++6 (on Windows XP)
で動かしています。

下記のコード、
以前は、
if (*lpCmdLine == 0)
のところで、0にはならず、うまく通り抜けたと思うのですが、
今は、0になり、コードが進みません。
何が悪いと考えられるのでしょうか?

=====================

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hwnd;
MSG msg;
WNDCLASS winc;

if (*lpCmdLine == 0)
{
MessageBox(NULL , TEXT(Specify File Name of Unexisted .wav
('.wav' is not needed).) ,
NULL , MB_OK);
return 0;
}

strFile = lpCmdLine;

winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = 0;
winc.cbWndExtra = DLGWINDOWEXTRA;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = CreateSolidBrush(GetSysColor(COLOR_MENU));
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT(Rainbow);

if (!RegisterClass(&winc)) return -1;

hwnd = CreateDialog(hInstance , TEXT(Rainbow) , 0 , NULL);

if (hwnd == NULL) return -1;

while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}


引用解決済
トピックタグ
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

>以前は、
>if (*lpCmdLine == 0)
>のところで、0にはならず、うまく通り抜けたと思うのですが、
>今は、0になり、コードが進みません。
>何が悪いと考えられるのでしょうか?

デバッガーで動作を追ってみましたか?
あなたの問題のプログラムに引数つきで呼出す時と引数なしで呼出す時とで
何か違いはありましたか?

以前と、今回とで何が違っているのか何も違っていないのか
当方には分り兼ねますので、あくまで推測に過ぎませんが
呼出し方に違いがあるのか、動作環境が変ったのか位しか思いつきません。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

 以前と以後の動作環境と開発環境の違いをきちんと示さないと
回答がもらえないと思います。
 
現状だと、
 vc 6.0 SP6はインストールしていますか?
 lpCmdLineはstaticもしくはmalloc()等で宣言してありますか。
 (C++を使っているときは、malloc()でなくnewになりますね。)
しか思い当たりません。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

なんつーか、単にプロジェクトの設定で、
デバッグ - プログラムの引数
の設定が消えただけなのでは?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました