개발메모(형식에 매이지 않는 짤막한 개발 낙서)

리스트박스(listbox)의 콜백예

조회 수 3057 추천 수 0 2006.06.19 23:51:10
허창원 *.19.45.14



리스트박스(listbox)의 콜백예

int CVICALLBACK listboxPCList (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
        {
        case EVENT_COMMIT:
            {
                int index;
                
                // ListBox에서 현재 Index를 구함
                GetCtrlIndex (panelHandle, PANEL_listboxPCList, &index);
            
                // 현재 Index의 값을 추출된 정보로 갱신함
                SetCtrlAttribute(panelHandle, PANEL_strMacAddr, ATTR_CTRL_VAL, pcwoldata.data[index].MacAddress);
                SetCtrlAttribute(panelHandle, PANEL_strPCAlias, ATTR_CTRL_VAL, pcwoldata.data[index].PCAlias);
    
                strMacAddr(0, 0, EVENT_COMMIT, NULL, 0, 0);
                strPCAlias(0, 0, EVENT_COMMIT, NULL, 0, 0);
            }
            break;
        }
    return 0;
}

int CVICALLBACK cmdAddPC (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
        {
        case EVENT_COMMIT:
            // 값을 추가
            pcwoldata.AddItem(&pcwoldata, 0, pcwakeonlan_ini_setting.strMacAddr, pcwakeonlan_ini_setting.strPCAlias);
            
            // ListBox를 갱신
            //Proc_RefreshListBox(&pcwoldata);
            InsertListItem (panelHandle, PANEL_listboxPCList, -1, pcwoldata.data[pcwoldata.numData-1].PCAlias, pcwoldata.numData-1);

            // 현재 위치를 조정
            SetCtrlIndex (panelHandle, PANEL_listboxPCList, pcwoldata.numData-1);
            
            // 현재 컨트롤을 Active로
            SetActiveCtrl (panelHandle, PANEL_listboxPCList);
            break;
        }
    return 0;
}

int CVICALLBACK cmdEditPC (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
        {
        case EVENT_COMMIT:
            {
                int index;
                
                // ListBox에서 현재 Index를 구함
                GetCtrlIndex (panelHandle, PANEL_listboxPCList, &index);
            
                // ListBox의 현재 Index에 해당되는 데이터를 수정
                strcpy(pcwoldata.data[index].MacAddress, pcwakeonlan_ini_setting.strMacAddr);
                strcpy(pcwoldata.data[index].PCAlias, pcwakeonlan_ini_setting.strPCAlias);
            
                // ListBox를 갱신
                Proc_RefreshListBox(&pcwoldata);
                
                // 현재 위치를 조정
                SetCtrlIndex (panelHandle, PANEL_listboxPCList, index);
                
                // 현재 컨트롤을 Active로
                SetActiveCtrl (panelHandle, PANEL_listboxPCList);
                
            }
            break;
        }
    return 0;
}

int CVICALLBACK cmdDelPC (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
        {
        case EVENT_COMMIT:
            {
                int index;
                
                // ListBox에서 현재 Index를 구함
                GetCtrlIndex (panelHandle, PANEL_listboxPCList, &index);

                // ListBox의 현재 Index에 해당되는 데이터를 삭제
                pcwoldata.DeleteItem(&pcwoldata, index);
            
                // ListBox를 갱신
                //Proc_RefreshListBox(&pcwoldata);
                DeleteListItem (panelHandle, PANEL_listboxPCList, index, 1);

                // 현재 컨트롤을 Active로
                SetActiveCtrl (panelHandle, PANEL_listboxPCList);
            }
            break;
        }
    return 0;
}

int CVICALLBACK cmdUp (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
        {
        case EVENT_COMMIT:
            {
                int index;
                
                // ListBox에서 현재 Index를 구함
                GetCtrlIndex (panelHandle, PANEL_listboxPCList, &index);

                if(index > 0)   /// 위로 옮기려면, 항목이 2개는 되어야죠!
                {
                    // 위, 아래 항목을 서로 교환
                    pcwoldata.SwapItem(&pcwoldata, index, index-1);

                    // ListBox를 갱신
                    Proc_RefreshListBox(&pcwoldata);
                    
                    // 현재 위치를 조정
                    SetCtrlIndex (panelHandle, PANEL_listboxPCList, index-1);
                    
                    // 현재 컨트롤을 Active로
                    SetActiveCtrl (panelHandle, PANEL_listboxPCList);
                }
            }
            break;
        }
    return 0;
}

int CVICALLBACK cmdDown (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
        {
        case EVENT_COMMIT:
            {
                int index;
                
                // ListBox에서 현재 Index를 구함
                GetCtrlIndex (panelHandle, PANEL_listboxPCList, &index);

                if(index < pcwoldata.numData-1)   /// 아래로 옮기려면, 이래야 되어야죠!
                {
                    // 위, 아래 항목을 서로 교환
                    pcwoldata.SwapItem(&pcwoldata, index, index+1);

                    // ListBox를 갱신
                    Proc_RefreshListBox(&pcwoldata);

                    // 현재 위치를 조정
                    SetCtrlIndex (panelHandle, PANEL_listboxPCList, index+1);

                    // 현재 컨트롤을 Active로
                    SetActiveCtrl (panelHandle, PANEL_listboxPCList);
                }
            }
            break;
        }
    return 0;
}
List of Articles
번호 제목 글쓴이 날짜 조회 수
113 [Doc] LabVIEW에서 공유라이브러리(DLL) 호출 허창원 2007-06-12 6038
112 ATTR_SIZE_TO_TEXT 허창원 2007-05-24 3976
111 errChk 매크로 허창원 2007-05-24 2802
110 [Source] Panel Size가 바뀔때 Table의 크기도 연동되도록 허창원 2007-05-24 2887
109 [Doc] Serial Communication Overview 허창원 2007-05-23 2927
108 [Doc] Networking Two PCs for Remote Data Acquisition 허창원 2007-05-23 2846
107 [Doc] 10 Things to Consider When Choosing Vision Software 허창원 2007-05-23 2884
106 이동 가능한 컨트롤로 지정하기 허창원 2007-04-20 2759
105 [링크] Introduction to the LabWindows/CVI TDM Streaming Library 허창원 2007-03-22 3060
104 [링크] Customizing Create Distribution Kit Installers in LabWindows/CVI 허창원 2007-03-13 3724
103 파일 찾아보기 버튼의 콜백함수 예 허창원 2007-02-24 2808
102 DAQmx 장치의 Device Serial Number 얻어오기 허창원 2006-12-18 3478
101 Canvas에 라인 긋는 절차 메모 허창원 2006-12-02 2964
100 sample source인 canvsbmk.c의 Draw() 함수의 일부 허창원 2006-12-02 5875
99 Easy Tab 사용하기 메모 허창원 2006-08-18 3516
98 Panel 활성화와 상관없이 Virtual Key 상태 알아내기 허창원 2006-08-16 3722
97 파워포인트의 특정 페이지로 이동하는 예 허창원 2006-08-08 3049
96 테이블(Table) 내의 셀(Cell) 속성을 변경하는 예 허창원 2006-06-30 3537
» 리스트박스(listbox)의 콜백예 file 허창원 2006-06-19 3057
94 ListBox를 갱신하는 나만의 스타일 허창원 2006-06-19 3003