2013-10-17 1 views
0

안녕하세요 여러분 모두 환영합니다. sdk 7.1을 사용하여 win32 응용 프로그램을 만들고 싶습니다. Visual C++ 2012 리소스 편집기를 사용하여 대화 상자를 만듭니다. 난 내 폴더에 resource.rc과 및 Resource.h을 복사하고 난이 간단한 MAIN.CPP 파일 쓰기 :내 대화 상자가 나타나지 않았습니다. sdk 7.1,

#include <windowsx.h> 
#include <Windows.h> 
#include <tchar.h> 

#include "resource.h" 

#define my_PROCESS_MESSAGE(hWnd, message, fn) \ 
    case(message): \ 
     return(\ 
      SetDlgMsgResult(hWnd, uMsg, \ 
       HANDLE_##message((hWnd), (wParam), (lParam), (fn)))) \ 

LRESULT CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM); 
BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam); 
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); 

int WINAPI _tWinMain( HINSTANCE hInstance, 
         HINSTANCE, 
         LPTSTR, 
         int   iCmdLine ) 
{ 
    DialogBoxParam( hInstance, 
         MAKEINTRESOURCE(IDD_INJECTOR), 
         NULL, 
         (DLGPROC) DlgProc, 
         NULL 
         ); 

    return FALSE; 
} 

LRESULT CALLBACK DlgProc( HWND hwnd, 
          UINT uMsg, 
          WPARAM wParam, 
          LPARAM lParam ) 
{ 
    switch (uMsg) 
    { 
     my_PROCESS_MESSAGE(hwnd, WM_INITDIALOG, Cls_OnInitDialog); 
     my_PROCESS_MESSAGE(hwnd, WM_COMMAND, Cls_OnCommand); 

    default: 
     break; 
    } 

    return DefWindowProc(hwnd, uMsg, wParam, lParam); 
} 


BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) 
{ 


    return TRUE; 
} 

void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) 
{ 
    switch(id) 
    { 
    case IDCANCEL: 
     EndDialog(hwnd, id); 
     break; 

    default: 
     break; 
    } 
} 

그때 내가, 내 코드를 컴파일 내가이 포럼에서 찾을 느릅 나무 다음 명령 줄을 사용을

cl main.cpp /link /SUBSYSTEM:WINDOWS user32.lib 

내 문제는 내 대화 상자가 나타나지 않았고 procexp를 사용할 때 t 무슨 일이 일어 나는지, 내 응용 프로그램이 생성 된 다음 동일한 시간에 닫혔다는 것을 알았고, 궁금한 것은 시각적 인 C++에서 잘 작동한다는 것입니다. 2012.

my sdk 7.1, 올바르게 설치했는데 모든 리소스 파일이 없으면 기본 창이

아이디어, 병 정말 감사

보다도, Zirek

당신은 리소스 컴파일러와 리소스 파일 "컴파일"필요
+1

가 DialogBoxParam' '의 리턴 값을 확인하고 만약''-1' GetLastError'의 반환 값을 확인한다. 무슨 일이 일어 났는지 알려주는 데 도움이 될 수 있습니다. – icabod

답변

1

:

그러면 resource.res이됩니다. 당신은 당신의 실행 파일 만들 때에 그 연결해야 : 나는 그 다음 작동하는지 확인하는 코드를 테스트하지 않았습니다

cl main.cpp resource.res /link /SUBSYSTEM:WINDOWS user32.lib 

을하지만, 적어도에서 링크 된 .res 파일로, 그것은 어떤 기회 않도록에 서 일.

+0

Jerry Coffin, Zirek에서 경의를 표하며 감사합니다. 저는 신속하게 해결할 수있는 두 가지 다른 문제에 직면 해 있습니다. 문제를 다시 해결해야 할 경우에 대비하여 새로운 솔루션을 포함하고 싶습니다. end 라인 오류 ...,이 오류는 컴파일러에 버그, 당신은 단지 몇 가지 빈 줄을 추가해야합니다 resource.h, 동부 서머 타임, 해결 된 첫 번째 문제의 끝에. afxres.h는 mfc 파일입니다. Resource.rc의 windows.h로 바꾼 다음 다시 컴파일하십시오. – zirek

0

MSDN에서, 유일한 문제가되지 않지만 : 대화 상자 프로 시저가 창 절차와 비슷

있지만,이 하지 호출 DefWindowProc를 지나온 기능은 원치 않는 메시지를 처리해야합니다. 원하지 않는 메시지는 대화 상자 창 프로 시저에 의해 내부적으로 처리됩니다.

는 [강조했다.]

+0

나는 그것을 변경합니다 : 반환 FALSE, 문제는 내가 리소스 파일을 먼저 컴파일하고 tnx 진행해야합니다. – zirek

관련 문제