2016-10-23 3 views
-4

그래, 현재 디버거에서 작업 해 왔고 디버거에서 명령을 실행하는 버튼을 만들었습니다. 하지만 내가하는 일을 올바르게 수행하지는 않습니다. 여기에 두 가지 경우에 대한 코드가 있습니다.버튼 클릭으로 다른 케이스를 호출하는 방법

case Execute_Button: 
    INPUT_FIELD; 
    break; 
case INPUT_FIELD: 
    if (HIWORD(wParam) == EN_MAXTEXT) { 
     char cText[INPUT_CHAR_LIMIT]; 
     SendMessage((HWND)lParam, WM_GETTEXT, INPUT_CHAR_LIMIT, (LPARAM)cText); 

     if (strcmp(cText, "") == 0) 
      break; 

     SendMessage((HWND)lParam, WM_SETTEXT, NULL, (LPARAM)""); 

     //std::string command = cText; 
     HandleCommand(cText); 
    } 

    break; 
} 
break; 

어떤 도움 ? 나는 정직하게 무엇을 해야할지 모른다.

+0

단추를 클릭하면 창 프로시 저는 WM_COMMAND 메시지를 수신합니다. 그 사건들을 처리하고 있습니까? – Asesh

+0

예 Main.cpp의 명령에 대한 처리기가 있습니다. – Ra1n

+0

버튼을 클릭해도 아무런 변화가 없습니까? 그게 당신이 의미 한 것입니까? – Asesh

답변

0

C++은 한 가지 예외 케이스에 케이스에서 이동 방법을 제공하지 않습니다 당신이 break, continue, 케이스 본체의 끝에서 제어 흐름 문 return, 또는 다른 종류의, 그것을이없는 경우 (다음 조건을 다시 확인하지 않고) 다음 케이스 본문으로 떨어집니다.

만약 ExecuteButtonINPUT_FIELD

case ExecuteButton: 
case INPUT_FIELD: 
    // shared code 

또는 ExecuteButtonINPUT_FIELD 년대 전에 자신의 코드를 가질 수 있습니다 다음, 서로 옆에 있습니다.

case ExecuteButton: 
    // some code 
    // fall through 
case INPUT_FIELD: 
    // shared code 

// fall through 코멘트

가 필요하지 않습니다, 그러나 그것을 포함하는 것은 다른 사람이 읽을 수있는 코드가 더 명확합니다.

그러나 ExecuteButtonINPUT_FIELD이 인접하지 않으면 공유 코드를 자유롭게 액세스 할 수있는 다른 곳 (예 : 함수)에 배치하도록 코드를 재구성해야합니다.

INPUT_FIELD; 

즉, C++에서 문의 기본 유형이 "표현 문"이기 때문이다 컴파일 여전히 아무것도하지 않습니다하지만 이유에 관해서는


. 할당과 함수 호출은 C++의 표현식입니다. 당신은 그런

x = y + z; 
somethingThatReturns(x, y); 

로 할당하거나 함수 호출을 할 때마다 당신은 정말 값이 (각각 y + z 및 함수의 반환 값) 할당 또는 함수 호출 결과 값에서 수행하는 식을 평가하고 버려진. 그래서

INPUT_FIELD; 

는 오류없이 컴파일러에 의해 무시됩니다

456; // or whatever the value of INPUT_FIELD is 

과 같이 될 것입니다.

관련 문제