win32 api 프로그래밍 질문입니다.

비켜색햐@Naver의 이미지

#include
#include
#include"resource.h"
#define T _T
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) {
int answer;
switch (iMsg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case ID_FILENEW:
MessageBox(hwnd, T("새 파일 열겠습니까?"), T("새파일 선택"), MB_OKCANCEL);
break;
case ID_EXIT:
answer = MessageBox(hwnd, T("끝냅니다"), T("종료"), MB_YESNOCANCEL);
if (answer == IDYES)
PostQuitMessage(0);
break;
}
break;
case WM_CREATE:
break;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE prevhinstance,
LPSTR lpszCmdLine, int nCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS wnd;
wnd.style = CS_VREDRAW | CS_HREDRAW;
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wnd.hInstance = hinstance;
wnd.lpfnWndProc = WndProc;
wnd.lpszMenuName = MAKEINTRESOURCE(IDR_MENU4_1);
wnd.lpszClassName = _T("WINDOW PLEASE!");
RegisterClass(&wnd);
hwnd = CreateWindow(_T("WINDOW PLEASE!"), _T("WINDOW PLEASE!"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance, NULL);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, hwnd, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}

이런식으로 코드를 짰는데
x버튼을 눌러 종료를 해도 완전히 종료되지않고 프로세서에 남고
또 상단 메뉴에서 종료버튼을 눌러 종료하려고해도 이번엔 프로그램조차 종료가 안되네요

이제 첫걸음을 땐것이라 무엇이 문제인지 모르겠습니다.
api프로그래밍 상당히 어렵네요.. 고수분들 답변 부탁드립니다!

shint의 이미지

가장 쉬운 방법은
1. 잘 되는 예제를 따라하는겁니다. (책'이나. 기업제휴. Open API. Open Source. SDK. 돈으로 구입. 대여.)
2. 일단. 잘 되면. 안되는 코드와 어떤점이 다른지 비교하는 방법이 있습니다. (오래 걸립니다.)

Visual Studio 에서 기본 프로젝트 만드시면. 그거 사용하시면 됩니다.

국비 직업학교'에서 지원해주는 경우도 있었는데. 요즘은 어떤지 모르겠네요.
- Visual C++
- Windows Programming

학원이나 사이버 교육을 받는 방법도 있습니다.

Win 32 API 에 대한 설명은 여기 있고.
http://soen.kr/

가남사 WINDOWS API 정복'이 보고 따라하기 좋습니다.
찰스 페졸드의 윈도우즈 프로그래밍'도 좋습니다.
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=win32+api

코드 프로젝트'에는 MFC 관련 예제가 많이 있습니다.
http://www.codeproject.com/

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

세벌의 이미지

소스코드는 code 태그 안에.

drinkme의 이미지

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632620(v=vs.85).aspx

case WM_DESTROY:
PostQuitMessage(0);
return 0;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.