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 is正在使用而没有初始化。对于 var Disps,我遇到了类似的错误。然后我宣布 char Disps[100]; 这显示没有错误。现在,错误转移到句柄上。我不确定我是否可以将句柄声明为数组,这是否有意义。我该如何解决这个问题?

4

1 回答 1

2

这是一个运行时错误。它告诉您的是TextLabelVar在初始化之前正在读取它。这意味着WM_MESSAGEFROMANOTHERWINDOW之前执行的 case 语句WM_CREATE

从您分配0TextLabelVar禁止警告的注释中,但是SetWindowText由于您传递的窗口句柄是0.

要解决问题,您需要先了解为什么WM_MESSAGEFROMANOTHERWINDOW要处理WM_CREATE

于 2013-07-05T09:00:54.593 回答