首页
社区
课程
招聘
[求助]子线程中控制进度条不起作用,什么原因?
发表于: 2008-10-4 21:44 6778

[求助]子线程中控制进度条不起作用,什么原因?

2008-10-4 21:44
6778
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    INITCOMMONCONTROLSEX icc;
    WNDCLASSEX wcx;

    icc.dwSize = sizeof(icc);
    icc.dwICC = ICC_WIN95_CLASSES | ICC_PROGRESS_CLASS;
    InitCommonControlsEx(&icc);

    wcx.cbSize = sizeof(wcx);
    if (!GetClassInfoEx(NULL, MAKEINTRESOURCE(32770), &wcx))
        return 0;

    /* Add our own stuff */
    wcx.hInstance = hInstance;
    wcx.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDR_ICO_MAIN));
    wcx.lpszClassName = TEXT("OK");
    if (!RegisterClassEx(&wcx))
        return 0;

    /* The user interface is a modal dialog box */
    return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)MainDlgProc);
}

static INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HMENU hMenu;
    HANDLE hThread,hPgb;
    DWORD ThreadId;
    switch (uMsg)
    {
        case WM_INITDIALOG:
            AnimateWindow(hDlg, 800, AW_SLIDE | AW_VER_NEGATIVE);
            return TRUE;

        case WM_COMMAND:
            switch (LOWORD(wParam))
            {
                case ID_BTN_START:
                    hPgb=GetDlgItem(hDlg,ID_PGB_MAIN);
[COLOR=Red]                    SendMessage(hPgb,PBM_SETRANGE32,0,100);  
                    SendMessage(hPgb,PBM_SETPOS,10,0);  //这里能正常显示进度[/COLOR]
                    hThread=CreateThread(NULL,0,&ThreadProc,&hPgb,0,&ThreadId);
                    return TRUE;
            }
            break;

        case WM_CLOSE:
            EndDialog(hDlg, 0);
            return TRUE;

    }

    return FALSE;
}

static DWORD WINAPI ThreadDownLoad (PVOID pParam)
{
[COLOR=Red]    SendMessage(pParam,PBM_SETPOS,60,0); //这里没作用[/COLOR]
    return 0;
}
偶需要在线程中控制一个进度条,写了上面的程序,红色部分在主线程中没问题,但是在子线程中就不起作用,搞半天没发现原因,特来请教。
谢谢先,在线等了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
确认一下窗口句柄是不是有效
2008-10-4 21:52
0
雪    币: 237
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
,收到,谢谢了
刚测试了,果然是窗口句柄无效

多3q啦
2008-10-4 21:58
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
hThread=CreateThread(NULL,0,&ThreadProc,&hPgb,0,&ThreadId);

应改成

hThread=CreateThread(NULL,0,&ThreadProc,(LPARAM)hPgb,0,&ThreadId);
2008-10-5 11:17
0
雪    币: 237
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢morning
又学到一招。
2008-10-5 11:42
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
核心编程说不要使用CreateThread
2008-10-6 16:21
0
游客
登录 | 注册 方可回帖
返回
//