Exemplo n.º 1
0
//设置音量值
bool WINAPI SetVolume(LONG vol)
{
	bool Result=false;   //用于判断函数是否执行成功
	MIXERCONTROL volCtrl;
	HMIXER hmixer;
	if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
	if(GetVolumeControl(hmixer,MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl))
	{ 
		int ChangeValue=volCtrl.Bounds.lMaximum/INTERVAL;
		int TotalValue=ChangeValue*vol;
		if(SetVolumeValue(hmixer,&volCtrl,TotalValue))
			Result=true;
	}   
	mixerClose(hmixer);
	return Result;
}
Exemplo n.º 2
0
BOOL CMyVolume::SetValue(int nVol)
{
	BOOL bSet = FALSE;
	HMIXER hmier;
	if (mixerOpen(&hmier, 0, 0, 0, 0))
	{
		return FALSE;
	}
	long device = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
	MIXERCONTROL volCtrl;
	BOOL bRet(FALSE);
	if ( GetVolumeControl(hmier, device, MIXERCONTROL_CONTROLTYPE_VOLUME, &volCtrl) )
	{
		nVol = nVol* volCtrl.Bounds.lMaximum/MAX_VOL;
		if ( SetVolumeValue(hmier,&volCtrl, nVol ) )
		{
			bRet = TRUE;			
		}

	}
	mixerClose(hmier);
	return bRet;
}
Exemplo n.º 3
0
//static INT_PTR CALLBACK
INT_PTR CALLBACK
VolumeDlgProc(HWND hwndDlg,
              UINT uMsg,
              WPARAM wParam,
              LPARAM lParam)
{
    static IMGINFO ImgInfo;
    PGLOBAL_DATA pGlobalData;
    UNREFERENCED_PARAMETER(lParam);
    UNREFERENCED_PARAMETER(wParam);

    pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);



    switch(uMsg)
    {
        case MM_MIXM_LINE_CHANGE:
        {
            GetMuteState(pGlobalData);
            if (pGlobalData->muteVal)
            {
                SendDlgItemMessage(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
                SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
            }
            else
            {
                SendDlgItemMessage(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
                SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
            }
            break;
        }
        case MM_MIXM_CONTROL_CHANGE:
        {
            GetVolumeValue(pGlobalData);
            SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETSEL, (WPARAM)FALSE, (LPARAM)MAKELONG(pGlobalData->volumeMinimum, pGlobalData->volumeValue/VOLUME_DIVIDER));
            SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pGlobalData->volumeValue/VOLUME_DIVIDER);
            break;
        }
        case WM_INITDIALOG:
        {
            pGlobalData = (GLOBAL_DATA*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
            SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);

            pGlobalData->hIconUnMuted = LoadImage(hApplet, MAKEINTRESOURCE(IDI_CPLICON), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
            pGlobalData->hIconMuted = LoadImage(hApplet, MAKEINTRESOURCE(IDI_MUTED_ICON), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
            pGlobalData->hIconNoHW = LoadImage(hApplet, MAKEINTRESOURCE(IDI_NO_HW), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);

            InitImageInfo(&ImgInfo);
            InitVolumeControls(hwndDlg, pGlobalData);
            break;
        }

        case WM_DRAWITEM:
        {
            LPDRAWITEMSTRUCT lpDrawItem;
            lpDrawItem = (LPDRAWITEMSTRUCT) lParam;
            if(lpDrawItem->CtlID == IDC_SPEAKIMG)
            {
                HDC hdcMem;
                LONG left;

                /* Position image in centre of dialog */
                left = (lpDrawItem->rcItem.right - ImgInfo.cxSource) / 2;

                hdcMem = CreateCompatibleDC(lpDrawItem->hDC);
                if (hdcMem != NULL)
                {
                    SelectObject(hdcMem, ImgInfo.hBitmap);
                    BitBlt(lpDrawItem->hDC,
                           left,
                           lpDrawItem->rcItem.top,
                           lpDrawItem->rcItem.right - lpDrawItem->rcItem.left,
                           lpDrawItem->rcItem.bottom - lpDrawItem->rcItem.top,
                           hdcMem,
                           0,
                           0,
                           SRCCOPY);
                    DeleteDC(hdcMem);
                }
            }
            break;
        }

        case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
                case IDC_MUTE_CHECKBOX:
                    if (HIWORD(wParam) == BN_CLICKED)
                    {
                        SwitchMuteState(pGlobalData);
                        if (pGlobalData->muteVal)
                        {
                            SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
                        }
                        else
                        {
                            SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
                        }

                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
                    }
                    break;

                case IDC_ICON_IN_TASKBAR:
                    if (HIWORD(wParam) == BN_CLICKED)
                    {
                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
                    }
                    break;

                case IDC_ADVANCED_BTN:
                    LaunchSoundControl(hwndDlg);
                    break;
            }
            break;
        }

        case WM_HSCROLL:
        {
            HWND hVolumeTrackbar = GetDlgItem(hwndDlg, IDC_VOLUME_TRACKBAR);
            if (hVolumeTrackbar == (HWND)lParam)
            {
                pGlobalData->volumeValue = (DWORD)SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_GETPOS, 0, 0)*VOLUME_DIVIDER;
                SetVolumeValue(pGlobalData);
                SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETSEL, (WPARAM)TRUE,
                    (LPARAM)MAKELONG(pGlobalData->volumeMinimum, pGlobalData->volumeValue/VOLUME_DIVIDER));
            }
            break;
        }

        case WM_DESTROY:
            mixerClose(pGlobalData->hMixer);
            DestroyIcon(pGlobalData->hIconMuted);
            DestroyIcon(pGlobalData->hIconUnMuted);
            DestroyIcon(pGlobalData->hIconNoHW);
            HeapFree(GetProcessHeap(), 0, pGlobalData);
            break;

        case WM_NOTIFY:
            if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY)
            {
                SaveData(hwndDlg);
            }
            return TRUE;
    }

    return FALSE;
}
Exemplo n.º 4
0
/* Handle user message from cloud
 * Receive msg from cloud && do hardware operation
 */
void downstream_thread(void* arg)
{
    user_log_trace();
    OSStatus err = kUnknownErr;
    mico_Context_t *app_context = (mico_Context_t *)arg;
    fogcloud_msg_t *recv_msg = NULL;
    json_object *recv_json_object = NULL;
    
    require(app_context, exit);
    
    while(1) {
        mico_thread_sleep(1);
        if(!MicoFogCloudIsConnect(app_context)) {
            user_log("appStatus.fogcloudStatus.isCloudConnected = false");
            //mico_thread_sleep(1);
            continue;
        }
        
        // recv_msg->data = <topic><data>
        err = MicoFogCloudMsgRecv(app_context, &recv_msg, 1000);
        user_log("err = %d", err);
        if(kNoErr == err){
            user_log("Msg recv: topic[%d]=[%.*s]\tdata[%d]=[%.*s]", 
                    recv_msg->topic_len, recv_msg->topic_len, recv_msg->data, 
                    recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
            
            recv_json_object = json_tokener_parse((const char*)recv_msg->data + recv_msg->topic_len);
            if(NULL != recv_json_object) {
                user_log("recv_json_object != NULL");
                
                // parse json object
                char *key; struct json_object *val; struct lh_entry *entry;

                for(entry = json_object_get_object(recv_json_object)->head; \
                        (entry ? (key = (char*)entry->k, val = (struct json_object*)entry->v, entry) : 0); \
                        entry = entry->next) {
                    if(!strcmp(key, "energy")){
                        SetEnergyValue(json_object_get_int(val));
                    }
                    else if(!strcmp(key, "interval")) {
                        SetIntervalValue(json_object_get_int(val));
                    }
                    else if(!strcmp(key, "lights")) {
                        SetLightsValue(json_object_get_int(val));
                    }
                    else if(!strcmp(key, "remind")) {
                        SetRemindValue(json_object_get_int(val));
                    }
                    else if(!strcmp(key, "volume")) {
                        SetVolumeValue(json_object_get_int(val));
                    }
                    else if(!strcmp(key, "subscribe")) {
                        subscribe = json_object_get_boolean(val);
                        user_log("subscribe = %d", (int)subscribe);
                    }
                    else if(!strcmp(key, "track")) {
                        //track = json_object_get_string(val);
                    }
                    else if(!strcmp(key, "url_path")) {
                        //url_path = json_object_get_string(val);
                    }
                }
            }
            
            // free memory of json object
            json_object_put(recv_json_object);
            recv_json_object = NULL;
        }
        
        // NOTE: must free msg memory after been used.
        if(NULL != recv_msg){
            free(recv_msg);
            recv_msg = NULL;
        }
    }
    
exit:
    if(kNoErr != err){
        user_log("ERROR: downstream_thread_handle thread exit with err=%d", err);
    }
    
    mico_rtos_delete_thread(NULL);  // delete current thread
}