win32apiにおける終了処理について
下記のプログラムを実行してウィンドウを閉じるボタンで閉じると、
ウィンドウは消えるのですがなぜかプロセスが残ってしまいます。
正直、お手上げなので教えて頂けると幸いです。
よろしくお願いします。
#include<windows.h>
#define APP_NAME TEXT("Sample_MainWindow")
/*ウィンドウプロシージャ*/
LRESULT CALLBACK WindowProc(
HWND hWnd, UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
/*基本的なメッセージの処理*/
return DefWindowProc(hWnd, uMsg,wParam,lParam);
}
/*WinMain*/
int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow)
{
HWND hWnd;
WNDCLASS wc;
MSG msg;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = DefWindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1;
wc.lpszMenuName = NULL;
wc.lpszClassName = APP_NAME;
if (!RegisterClass(&wc)){
MessageBox(NULL,TEXT("ウィンドウクラスの作成に失敗しました"),NULL,MB_OK);
return 0;
}
hWnd = CreateWindow(
APP_NAME, TEXT("Window Title"),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL
);
if(hWnd == NULL){
MessageBox(NULL,TEXT("ウィンドウの生成に失敗しました"),NULL,MB_OK);
return 0;
}
/*メッセージループ*/
while(GetMessage(&msg, NULL,0,0)){
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
お礼
実行時の引数は、いろいろやっても同じ状況でした。 例えば、"aaa"と入力して実行しても""が戻ってきて、Turbo Debuggerを起動すると、"aaa"が戻ってきます。 ふと思い立って、保存してあった昔のバージョンのBcc Developerを使ったら正常になりました。 Bcc Developerとの相性だったのかも知れません。 回答をありがとうございました。