2013-07-05 2 views
2

오류 초기화를하는 방법 :핸들을

Run-Time Check Failure #3 - The variable 'TextLabelVar' is being used without 
being initialized. 

예시 코드 :

HWND VarText; 
char Disps[100]; 
float some_number; 
WINAPI WndProc(..) 
{ 

    switch(...) 
    case WM_CREATE: 
    TextLabelVar=CreateWindowEx(WS_EX_WINDOWEDGE,TEXT("Edit"), TEXT("Val."), WS_CHILD \ 
       | WS_VISIBLE, 380, 50, 140, 20, hwnd, NULL, NULL, NULL); 
    break; 

    case WM_MESSAGEFROMANOTHERWINDOW: 
    some_number=1298.123123; 
    sprintf(Disps,"%f",some_number); 
    SetWindowText(TextLabelVar,TEXT(Disps)); 

} 

질문 : 좋아, 내가 오류 TextLabelVar가 초기화하지 않고 사용되는 수. var Disps에 대해 유사한 오류가 발생했습니다. 나는 char Disps [100]를 선언했다. 이것은 오류를 나타내지 않았다. 이제 오류가 핸들 위로 이동합니다. 나는 배열로서 핸들을 선언 할 수 있는지 확신 할 수 없다. 어떻게 해결할 수 있습니까?

+1

케이스 WM_CREATE에 들어가시겠습니까? – doctorlove

+3

"Run-Time Check Failure # 3"을 출력하는 시스템이 변수가 실제로 초기화되었지만 다른 코드 경로에 있다는 것을 알지 못하는 간단한 경우라고 생각합니다. 다른 말로하면, 다른 경우에 초기화된다는 것을 모릅니다. 선언에서'TextLabelVar'에 0을 할당하면 해결할 수 있습니다. –

+0

@doctorlove 왜? 무슨 소리 야? 창을 만들 때 텍스트 필드를 만들고 싶습니다. 나는 메인 윈도우도 가지고있다. 그런 다음 WM_MESSAGEFROMANOTHERWINDOW가 오면 텍스트 필드를 업데이트하고 싶습니다. 어디에 배치해야합니까? – user2178841

답변

2

이것은 런타임 오류입니다. 그것이 초기화되기 전에 TextLabelVar이 읽히고 있다는 것입니다. 이는 앞에 case 문이 실행되었음을 의미합니다. 당신이 전달하는 창 핸들 0 때문에 당신이 경고를 억제하는 TextLabelVar-0를 할당 한 의견에서

하지만은 물론 SetWindowText에 대한 호출이 성공할 수 없다.

WM_MESSAGEFROMANOTHERWINDOWWM_CREATE 전에 처리되는 이유를 알아야 문제를 해결할 수 있습니다.

관련 문제