我在一个界面中使用了一个picture控件,根据程序状态不同更改图片,我写了重新载入图片的代码后后面接的是一个线程,可是程序执行时,一更改图片后图片不可见了,而等带线程结束后才显示出来,这是为什么呢?

解决方案 »

  1.   

    HBITMAP  hBitmap = NULL; m_Info.hWnd = m_hWnd;
    m_Info.nCode = 0;
    strcpy(m_Info.szServerName, (LPCTSTR)m_ServerStr);
    hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,
    MAKEINTRESOURCE(IDB_IDLE_SERVER));
    m_Picture.SetBitmap(hBitmap);
    Sleep(1);
    SetWindowState(2);//窗体界面控制
    AfxBeginThread((AFX_THREADPROC)(SW_StartService), (LPVOID)&m_Info,
    0, 0, 0,  NULL);//线程
    int  SW_IsStartup(ServerInfo *pInfo)
    {
    HRESULT         hr;
    SC_HANDLE       hSCM;
    SC_HANDLE       hService;
    SERVICE_STATUS  ssStatus;

    // Open a connection to the service control manager.
    hSCM = OpenSCManager(pInfo->szServerName, NULL, SC_MANAGER_CONNECT);

    // Open the Windows Media service.
    hService = OpenService(hSCM, DATASERVICE, SERVICE_STOP | SERVICE_START |
    SERVICE_QUERY_STATUS);

    hr = QueryServiceStatus(hService, &ssStatus);
    if (!hr) {//网络路径不存在
    ::SendMessage(pInfo->hWnd, WM_THEADRESULT, 6, NULL);
    return 0;
    }

    if (ssStatus.dwCurrentState == SERVICE_RUNNING){//正在运行
    ::SendMessage(pInfo->hWnd, WM_THEADRESULT, 0, NULL);
    return 1;
    }
    else{//停止状态
    ::SendMessage(pInfo->hWnd, WM_THEADRESULT, 1, NULL);
    return 0;
    }
    CloseServiceHandle(hService);
    CloseServiceHandle(hSCM);}