如何初始化句柄

时间:2013-07-05 08:33:18

标签: c++ visual-studio-2010 winapi win32gui win32-process

错误:

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得到类似的错误。然后我宣布char Disps [100];这表明没有错误。现在,错误移动到句柄上。我不确定我可以将句柄声明为数组,这是有道理的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这是运行时错误。它告诉你的是TextLabelVar在被初始化之前被阅读。这意味着WM_MESSAGEFROMANOTHERWINDOW案例陈述在WM_CREATE之前执行。

从您已分配0TextLabelVar的评论来取消警告,但当然对SetWindowText的调用无法成功,因为您传递的窗口句柄为{{1 }}

要解决此问题,您需要了解0之前处理WM_MESSAGEFROMANOTHERWINDOW的原因。