亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? message.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發包(MiniGUI-Processes 運行模式)。
?? C
?? 第 1 頁 / 共 3 頁
字號:
            if (pMsgQueue->dwState & (0x01 << slot))                break;        }        if (slot == DEF_NR_TIMERS) {            pMsgQueue->dwState &= ~QS_TIMER;            pthread_mutex_unlock (&pMsgQueue->lock);        }        else {            pMsg->hwnd = pMsgQueue->TimerOwner[slot];            pMsg->message = MSG_TIMER;            pMsg->wParam = pMsgQueue->TimerID[slot];            pMsg->lParam = 0;            pMsg->pAdd = NULL;            pMsgQueue->dwState &= ~(0x01 << slot);            pthread_mutex_unlock (&pMsgQueue->lock);            return 1;        }    }    // no message, wait again.    sem_wait (&pMsgQueue->wait);    goto checkagain;    return 1;}int GUIAPI ThrowAwayMessages (HWND hWnd){    PMSG        pMsg;    PMSGQUEUE   pMsgQueue;    PQMSG       pQMsg;    PSYNCMSG    pSyncMsg;    int         nCount = 0;    int         readpos;    if( !(pMsgQueue = GetMsgQueue(hWnd)) ) return ERR_INV_HWND;    pthread_mutex_lock (&pMsgQueue->lock);    if (pMsgQueue->pFirstNotifyMsg) {        pQMsg = pMsgQueue->pFirstNotifyMsg;                while (pQMsg) {            pMsg = &pQMsg->Msg;            if (pMsg->hwnd == hWnd                    || GetMainWindowPtrOfControl (pMsg->hwnd) == (PMAINWIN)hWnd) {                pMsg->hwnd = HWND_INVALID;                nCount ++;            }            pQMsg = pQMsg->next;        }    }    /* FIXME: notify the waiting window */    if (pMsgQueue->pFirstSyncMsg) {        pSyncMsg = pMsgQueue->pFirstSyncMsg;                while (pSyncMsg) {            pMsg = &pSyncMsg->Msg;            if (pMsg->hwnd == hWnd                    || GetMainWindowPtrOfControl (pMsg->hwnd) == (PMAINWIN)hWnd) {                pMsg->hwnd = HWND_INVALID;                nCount ++;            }            pSyncMsg = pSyncMsg->pNext;        }    }    readpos = pMsgQueue->readpos;    while (readpos != pMsgQueue->writepos) {        pMsg = pMsgQueue->msg + readpos;        if (pMsg->hwnd == hWnd                || GetMainWindowPtrOfControl (pMsg->hwnd) == (PMAINWIN)hWnd) {            pMsg->hwnd = HWND_INVALID;            nCount ++;        }                readpos++;        if (readpos >= pMsgQueue->len)             readpos = 0;    }    pthread_mutex_unlock (&pMsgQueue->lock);    return nCount;}BOOL GUIAPI PeekPostMessage (PMSG pMsg, HWND hWnd, int iMsgFilterMin,                         int iMsgFilterMax, UINT uRemoveMsg){    PMSGQUEUE pMsgQueue;    PMSG pPostMsg;        if( !(pMsgQueue = GetMsgQueue(hWnd)) ) return FALSE;    memset (pMsg, 0, sizeof(MSG));    if (pMsgQueue->dwState & QS_POSTMSG) {            pthread_mutex_lock (&pMsgQueue->lock);        if (pMsgQueue->readpos != pMsgQueue->writepos) {            pPostMsg = pMsgQueue->msg + pMsgQueue->readpos;            if (iMsgFilterMin == 0 && iMsgFilterMax == 0)                *pMsg = *pPostMsg;            else if (pPostMsg->message <= iMsgFilterMax &&                    pPostMsg->message >= iMsgFilterMin)                *pMsg = *pPostMsg;            else {                pthread_mutex_unlock (&pMsgQueue->lock);                return FALSE;            }                        pMsg->pAdd = NULL;            if (uRemoveMsg == PM_REMOVE) {                pMsgQueue->readpos++;                if (pMsgQueue->readpos >= pMsgQueue->len)                     pMsgQueue->readpos = 0;            }            pthread_mutex_unlock (&pMsgQueue->lock);            return TRUE;        }        pthread_mutex_unlock (&pMsgQueue->lock);    }    return FALSE;}                        int GUIAPI PostMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam){    PMSGQUEUE pMsgQueue;    PMSG pMsg;    int sem_value;    if( !(pMsgQueue = GetMsgQueue(hWnd)) ) return ERR_INV_HWND;    pthread_mutex_lock (&pMsgQueue->lock);    if (iMsg == MSG_PAINT) {        pMsgQueue->dwState |= QS_PAINT;        goto goodret;    }        if ((pMsgQueue->writepos + 1) % pMsgQueue->len == pMsgQueue->readpos) {        pthread_mutex_unlock (&pMsgQueue->lock);        return ERR_QUEUE_FULL;    }        // Write the data and advance write pointer */    pMsg = &(pMsgQueue->msg[pMsgQueue->writepos]);    pMsg->hwnd = hWnd;    pMsg->message = iMsg;    pMsg->wParam = wParam;    pMsg->lParam = lParam;    pMsgQueue->writepos++;    if (pMsgQueue->writepos >= pMsgQueue->len) pMsgQueue->writepos = 0;    pMsgQueue->dwState |= QS_POSTMSG;goodret:    pthread_mutex_unlock (&pMsgQueue->lock);    // Signal that the msg queue contains one more element for reading    sem_getvalue (&pMsgQueue->wait, &sem_value);    if (sem_value <= 0)        sem_post(&pMsgQueue->wait);    return ERR_OK;}int GUIAPI PostQuitMessage(HWND hWnd){    PMSGQUEUE pMsgQueue;    int sem_value;    if( !(pMsgQueue = GetMsgQueue(hWnd)) ) return ERR_INV_HWND;    pMsgQueue->dwState |= QS_QUIT;    // Signal that the msg queue contains one more element for reading    sem_getvalue (&pMsgQueue->wait, &sem_value);    if (sem_value <= 0)        sem_post(&pMsgQueue->wait);    return ERR_OK;}int GUIAPI PostSyncMessage(HWND hWnd, int msg, WPARAM wParam, LPARAM lParam){    PMSGQUEUE pMsgQueue;    SYNCMSG SyncMsg;    int sem_value;    if( !(pMsgQueue = GetMsgQueue(hWnd)) ) return ERR_INV_HWND;    // queue the sync message.    SyncMsg.Msg.hwnd = hWnd;    SyncMsg.Msg.message = msg;    SyncMsg.Msg.wParam = wParam;    SyncMsg.Msg.lParam = lParam;    SyncMsg.pNext = NULL;    sem_init (&SyncMsg.sem_handle, 0, 0);    pthread_mutex_lock (&pMsgQueue->lock);    if (pMsgQueue->pFirstSyncMsg == NULL) {        pMsgQueue->pFirstSyncMsg = pMsgQueue->pLastSyncMsg = &SyncMsg;    }    else {        pMsgQueue->pLastSyncMsg->pNext = &SyncMsg;        pMsgQueue->pLastSyncMsg = &SyncMsg;    }    pMsgQueue->dwState |= QS_SYNCMSG;    pthread_mutex_unlock (&pMsgQueue->lock);    // Signal that the msg queue contains one more element for reading    sem_getvalue (&pMsgQueue->wait, &sem_value);    if (sem_value <= 0)        sem_post(&pMsgQueue->wait);    // suspend until the message been handled.    sem_wait(&SyncMsg.sem_handle);    sem_destroy(&SyncMsg.sem_handle);    return SyncMsg.retval;}int GUIAPI SendMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam){    WNDPROC WndProc;    PMAINWIN pMainWin;    if (hWnd == HWND_INVALID) return -1;    if (hWnd == HWND_DESKTOP) {        if (pthread_self() != __mg_desktop)            return PostSyncMessage (HWND_DESKTOP, iMsg, wParam, lParam);        else            return DesktopWinProc (hWnd, iMsg, wParam, lParam);    }    pMainWin = GetMainWindowPtrOfControl (hWnd);    if (pMainWin->th != pthread_self())        return PostSyncMessage (hWnd, iMsg, wParam, lParam);        WndProc = GetWndProc(hWnd);    return (*WndProc)(hWnd, iMsg, wParam, lParam);}int GUIAPI SendNotifyMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam){//    PMAINWIN pMainWin;    PMSGQUEUE pMsgQueue;    PQMSG pqmsg;    int sem_value;    if (hWnd == HWND_INVALID) return -1;    if( !(pMsgQueue = GetMsgQueue(hWnd)) ) return ERR_INV_HWND;/*    if (hWnd == HWND_DESKTOP) {        if (pthread_self() == __mg_desktop)            return DesktopWinProc (hWnd, iMsg, wParam, lParam);    }    else {        pMainWin = GetMainWindowPtrOfControl (hWnd);        if (pMainWin->th == pthread_self()) {            WNDPROC WndProc;                WndProc = GetWndProc(hWnd);            return (*WndProc)(hWnd, iMsg, wParam, lParam);        }    }*/        pqmsg = QMSGAlloc();    pthread_mutex_lock (&pMsgQueue->lock);    // queue the sync message.    pqmsg->Msg.hwnd = hWnd;    pqmsg->Msg.message = iMsg;    pqmsg->Msg.wParam = wParam;    pqmsg->Msg.lParam = lParam;    pqmsg->next = NULL;    if (pMsgQueue->pFirstNotifyMsg == NULL) {        pMsgQueue->pFirstNotifyMsg = pMsgQueue->pLastNotifyMsg = pqmsg;    }    else {        pMsgQueue->pLastNotifyMsg->next = pqmsg;        pMsgQueue->pLastNotifyMsg = pqmsg;    }    pMsgQueue->dwState |= QS_NOTIFYMSG;    pthread_mutex_unlock (&pMsgQueue->lock);    // Signal that the msg queue contains one more element for reading    sem_getvalue (&pMsgQueue->wait, &sem_value);    if (sem_value <= 0)        sem_post(&pMsgQueue->wait);    return ERR_OK;}int GUIAPI SendAsyncMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam){    WNDPROC WndProc;        if (hWnd == HWND_INVALID) return -1;    WndProc = GetWndProc(hWnd);    return (*WndProc)(hWnd, iMsg, wParam, lParam);}#ifdef _TRACE_MSGint GUIAPI DispatchMessage(PMSG pMsg){    WNDPROC WndProc;    PSYNCMSG pSyncMsg;    int iRet;    fprintf (stderr, "Message, %s: hWnd: %x, wP: %x, lP: %lx. %s\n",        Message2Str (pMsg->message),        pMsg->hwnd,        pMsg->wParam,        pMsg->lParam,        pMsg->pAdd?"Sync":"Normal");    if (pMsg->hwnd == HWND_INVALID) {        if (pMsg->pAdd) {            pSyncMsg = (PSYNCMSG)pMsg->pAdd;            pSyncMsg->retval = HWND_INVALID;            sem_post(&pSyncMsg->sem_handle);        }                fprintf (stderr, "Message have been thrown away: %s\n",            Message2Str (pMsg->message));        return HWND_INVALID;    }    WndProc = GetWndProc (pMsg->hwnd);    if ( pMsg->pAdd ) // this is a sync message.    {         pSyncMsg = (PSYNCMSG)pMsg->pAdd;         pSyncMsg->retval = (*WndProc)                   (pMsg->hwnd, pMsg->message, pMsg->wParam, pMsg->lParam);         sem_post(&pSyncMsg->sem_handle);         iRet = pSyncMsg->retval;    }    else        iRet = (*WndProc)(pMsg->hwnd, pMsg->message, pMsg->wParam, pMsg->lParam);    fprintf (stderr, "Message, %s done, return value: %x\n",        Message2Str (pMsg->message),        iRet);    return iRet;}#elseint GUIAPI DispatchMessage(PMSG pMsg){    WNDPROC WndProc;    PSYNCMSG pSyncMsg;    if (pMsg->hwnd == HWND_INVALID) {        if (pMsg->pAdd) {            pSyncMsg = (PSYNCMSG)pMsg->pAdd;            pSyncMsg->retval = HWND_INVALID;            sem_post(&pSyncMsg->sem_handle);        }        return HWND_INVALID;    }    WndProc = GetWndProc(pMsg->hwnd);    if ( pMsg->pAdd ) // this is a sync message.    {        pSyncMsg = (PSYNCMSG)pMsg->pAdd;        pSyncMsg->retval = (*WndProc)                   (pMsg->hwnd, pMsg->message, pMsg->wParam, pMsg->lParam);        sem_post(&pSyncMsg->sem_handle);        return pSyncMsg->retval;    }    return (*WndProc)(pMsg->hwnd, pMsg->message, pMsg->wParam, pMsg->lParam);}#endif /* !TRACE_MSG */#endif /* !LITE_VERSION */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久久综合亚洲鲁鲁五月天 | 中文字幕不卡在线| 欧美一区二区三区在| 在线亚洲一区二区| 一本久道久久综合中文字幕| av爱爱亚洲一区| 99r精品视频| 99精品国产热久久91蜜凸| 国产在线看一区| 国产一区二区中文字幕| 国产激情视频一区二区三区欧美 | www激情久久| 久久久久久久久久电影| 久久九九影视网| 国产免费观看久久| 日韩伦理av电影| 亚洲图片一区二区| 丝袜a∨在线一区二区三区不卡| 亚洲五码中文字幕| 久久精品国产亚洲5555| 国产精品一卡二卡在线观看| 国产成人精品一区二区三区四区| 国产裸体歌舞团一区二区| 成人伦理片在线| 色国产综合视频| 日韩欧美资源站| 国产精品素人一区二区| 亚洲综合激情网| 久久狠狠亚洲综合| 成人激情图片网| 欧美在线视频日韩| 久久婷婷国产综合精品青草| 成人免费在线视频| 日本不卡视频在线| 国产成人免费视频网站| 欧美亚洲高清一区二区三区不卡| 91精品在线免费| 国产精品丝袜在线| 欧美96一区二区免费视频| 丁香五精品蜜臀久久久久99网站| 欧美综合欧美视频| 久久精品视频一区二区| 洋洋av久久久久久久一区| 麻豆精品新av中文字幕| 不卡高清视频专区| 欧美一卡2卡3卡4卡| 成人免费在线视频观看| 精久久久久久久久久久| 色天使久久综合网天天| 久久久久久麻豆| 性欧美大战久久久久久久久| 波多野结衣在线aⅴ中文字幕不卡| 欧美日韩国产一级片| 国产精品区一区二区三| 开心九九激情九九欧美日韩精美视频电影 | 久久精品亚洲麻豆av一区二区| 亚洲综合激情另类小说区| 成人丝袜18视频在线观看| 日韩一级高清毛片| 午夜免费欧美电影| 色8久久人人97超碰香蕉987| 国产视频911| 久久99精品久久久久久动态图| 欧美无乱码久久久免费午夜一区| 国产精品天美传媒| 国产精品99精品久久免费| 欧美一区二区免费视频| 亚洲一区二区三区四区在线免费观看 | 日韩精彩视频在线观看| 91美女在线视频| 欧美国产激情一区二区三区蜜月| 美女mm1313爽爽久久久蜜臀| 91精品免费在线观看| 偷拍一区二区三区四区| 欧美视频中文字幕| 亚洲在线一区二区三区| 欧美自拍偷拍午夜视频| 综合自拍亚洲综合图不卡区| 91在线播放网址| 亚洲精品综合在线| 在线免费观看不卡av| 亚洲成人资源网| 欧美日免费三级在线| 五月激情六月综合| 制服丝袜激情欧洲亚洲| 麻豆freexxxx性91精品| 日韩午夜电影av| 国产美女精品在线| 国产精品久久久久婷婷| av不卡免费在线观看| 亚洲桃色在线一区| 欧美日韩中字一区| 久久精品国产精品亚洲综合| 久久久久久电影| av资源网一区| 亚洲电影一区二区| 日韩欧美一区二区视频| 国产精品综合av一区二区国产馆| 欧美国产一区视频在线观看| 国产丶欧美丶日本不卡视频| 亚洲色图欧美偷拍| 欧美日韩成人在线一区| 国内成人免费视频| 国产精品女上位| 欧美日韩国产首页| 国产精品一区免费在线观看| 亚洲欧洲另类国产综合| 欧美精品日韩一本| 国产露脸91国语对白| 亚洲精品成人在线| 精品久久人人做人人爱| 91浏览器在线视频| 久久国内精品视频| 亚洲日本va午夜在线影院| 91精品国产欧美一区二区18| 国产999精品久久| 亚洲国产精品久久不卡毛片| 久久久久99精品一区| 欧美性一二三区| 国产精品一区二区三区网站| 亚洲伊人色欲综合网| 久久久蜜桃精品| 欧美亚洲动漫另类| 白白色 亚洲乱淫| 美女一区二区视频| 一区二区三区中文在线| 久久久不卡影院| 欧美精品aⅴ在线视频| 91麻豆免费在线观看| 久久99精品久久久| 五月婷婷综合在线| 亚洲视频中文字幕| 国产精品丝袜久久久久久app| 91精品国产欧美一区二区| 欧美在线看片a免费观看| 成人精品高清在线| 麻豆精品久久精品色综合| 亚洲国产成人av| 亚洲人午夜精品天堂一二香蕉| 日韩精品一区二区三区swag| 欧美色区777第一页| 99久久99久久精品国产片果冻| 国产综合色产在线精品| 蜜桃视频在线一区| 日韩精品色哟哟| 亚洲成人在线免费| 一区二区三区四区亚洲| 国产精品第四页| 国产精品福利一区| 国产精品久久久久一区| 中文字幕欧美日韩一区| 久久影音资源网| 精品国产免费一区二区三区香蕉| 宅男在线国产精品| 91精品国产色综合久久不卡蜜臀| 欧美精品一卡两卡| 欧美一区二区精品在线| 精品欧美一区二区在线观看| 日韩欧美电影在线| 欧美成人在线直播| wwww国产精品欧美| 久久精品在线观看| 中文字幕中文字幕中文字幕亚洲无线| 国产欧美精品一区aⅴ影院| 久久综合久久综合久久综合| 国产午夜精品一区二区| 久久精品一区二区三区四区| 国产精品拍天天在线| 亚洲色图视频免费播放| 亚洲国产欧美在线| 久久精品国产免费| 国产成人a级片| 91蝌蚪porny| 欧美日韩电影一区| 久久综合色婷婷| 亚洲天堂免费看| 丝袜脚交一区二区| 国产成人亚洲精品青草天美| 波多野结衣中文字幕一区二区三区 | 国产精一区二区三区| av一区二区不卡| 欧美伦理影视网| 久久精品日韩一区二区三区| 亚洲三级在线看| 美女www一区二区| av中文字幕不卡| 欧美精品一二三四| 日本一区二区免费在线| 亚洲不卡在线观看| 国产91精品在线观看| 91福利国产成人精品照片| 日韩欧美在线网站| 亚洲欧洲综合另类在线| 久久av中文字幕片| 91国产精品成人| 国产欧美视频在线观看| 亚洲国产综合在线| 成人av在线看| 精品久久久久一区| 亚洲一区二区三区激情|