Beispiel #1
0
BOOL CALLBACK DeviceDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 switch(uMsg)
  {
   case WM_INITDIALOG:
    {
     HWND hWC;int i;
     DoDevEnum(hW);
     hWC=GetDlgItem(hW,IDC_DEVICE);
     i=ComboBox_FindStringExact(hWC,-1,szDevName);
     if(i==CB_ERR) i=0;
     ComboBox_SetCurSel(hWC,i);
     hWC=GetDlgItem(hW,IDC_GAMMA);
     ScrollBar_SetRange(hWC,0,1024,FALSE);
     if(iUseGammaVal==2048) ScrollBar_SetPos(hWC,512,FALSE);
     else
      {
       ScrollBar_SetPos(hWC,iUseGammaVal,FALSE);
       CheckDlgButton(hW,IDC_USEGAMMA,TRUE);
      }
    }

   case WM_HSCROLL:
    {
     HWND hWC=GetDlgItem(hW,IDC_GAMMA);
     int pos=ScrollBar_GetPos(hWC);
     switch(LOWORD(wParam))
      {
       case SB_THUMBPOSITION:    
        pos=HIWORD(wParam);break; 
       case SB_LEFT:
        pos=0;break;
       case SB_RIGHT:  
        pos=1024;break;
       case SB_LINELEFT:
        pos-=16;break;
       case SB_LINERIGHT:
        pos+=16;break;
       case SB_PAGELEFT:  
        pos-=128;break;
       case SB_PAGERIGHT: 
        pos+=128;break;

      }
     ScrollBar_SetPos(hWC,pos,TRUE);
     return TRUE;
    }

   case WM_COMMAND:
    {
     switch(LOWORD(wParam))
      {
       case IDCANCEL: FreeGui(hW);
                      EndDialog(hW,FALSE);return TRUE;
       case IDOK:     
        {
         HWND hWC=GetDlgItem(hW,IDC_DEVICE);
         int i=ComboBox_GetCurSel(hWC);
         if(i==CB_ERR) return TRUE;
         guiDev=*((GUID *)ComboBox_GetItemData(hWC,i));
         ComboBox_GetLBText(hWC,i,szDevName);
         FreeGui(hW);

         if(!IsDlgButtonChecked(hW,IDC_USEGAMMA))
          iUseGammaVal=2048;
         else
          iUseGammaVal=ScrollBar_GetPos(GetDlgItem(hW,IDC_GAMMA));

         EndDialog(hW,TRUE);
         return TRUE;
        }
      }
    }
  }
 return FALSE;
}                             
Beispiel #2
0
//ダイアログボックスのプロシージャ
BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
    static HWND hRadio1, hRadio2, hRadio3, hRadio4;
    static HWND hCheck1, hCombo1, hList1, hEdit1, hScrol1;
    TCHAR szBuf[64];
    TCHAR szList[5][16] = { TEXT("飼っていない"), TEXT("犬"),
                            TEXT("猫"), TEXT("ねずみ"), TEXT("馬")};
    TCHAR szCombo[6][16] = { TEXT("北海道"), TEXT("本州"), TEXT("四国"),
                             TEXT("九州"), TEXT("沖縄"), TEXT("その他") };
    static HWND hMain;
    int id, n;
    BOOL bSuccess;

    switch (msg) {
        case WM_HSCROLL:        // スクロールイベントの処理
            if (lp != (LPARAM)hScrol1)
                return FALSE;
            switch (LOWORD(wp)) {
                case SB_LEFT:
                    nPos = 0;
                    break;
                case SB_RIGHT:
                    nPos = 100;
                    break;
                case SB_LINELEFT:
                    nPos--;
                    if (nPos < 0)   nPos = 0;
                    break;
                case SB_LINERIGHT:
                    nPos++;
                    if (nPos > 100) nPos = 100;
                    break;
                case SB_PAGELEFT:
                    nPos -= 10;
                    if (nPos > 100) nPos = 100;
                    break;
                case SB_PAGERIGHT:
                    nPos += 10;
                    if (nPos < 0)   nPos = 0;
                    break;
                case SB_THUMBTRACK:
                case SB_THUMBPOSITION:
                    nPos = HIWORD(wp);
                    break;
                
            }

            // スクロールつまみを移動させる
            ScrollBar_SetPos(hScrol1, nPos, TRUE);

            wsprintf(szBuf, TEXT("%03d"), nPos);
            Edit_SetText(hEdit1, szBuf);
            wsprintf(szText[5],
                TEXT("スクロールバーの位置=%03d"), nPos);
            InvalidateRect(hMain, NULL, TRUE);
            return TRUE;
        case WM_INITDIALOG:
            //親ウィンドウのハンドル取得
            hMain = GetParent(hDlg);
            //各コントロールのハンドルを取得
            hRadio1 = GetDlgItem(hDlg, IDC_RADIO1);
            hRadio2 = GetDlgItem(hDlg, IDC_RADIO2);
            hRadio3 = GetDlgItem(hDlg, IDC_RADIO3);
            hRadio4 = GetDlgItem(hDlg, IDC_RADIO4);
            hCheck1 = GetDlgItem(hDlg, IDC_CHECK1);
            hCombo1 = GetDlgItem(hDlg, IDC_COMBO1);
            hList1 = GetDlgItem(hDlg, IDC_LIST1);
            hEdit1 = GetDlgItem(hDlg, IDC_EDIT1);
            hScrol1 = GetDlgItem(hDlg, IDC_SCROLLBAR1);
            //スクロールバーの初期設定
            ScrollBar_SetRange(hScrol1, 0, 100, TRUE);
            ScrollBar_SetPos(hScrol1, nPos, TRUE);
            //ラジオグループの初期設定
            if (nSex == 0)
                Button_SetCheck(hRadio1, BST_CHECKED);
            else
                Button_SetCheck(hRadio2, BST_CHECKED);
            if (nNation == 0)
                Button_SetCheck(hRadio3, BST_CHECKED);
            else
                Button_SetCheck(hRadio4, BST_CHECKED);
            //チェックボックスの設定
            if (n20 == 1)
                Button_SetCheck(hCheck1, BST_CHECKED);
            else
                Button_SetCheck(hCheck1, BST_UNCHECKED);
            //コンボボックスに文字列を加える
            for (n = 0; n < 6; n++)
                ComboBox_AddString(hCombo1, szCombo[n]);
            //リストボックスに文字列を加える
            for (n = 0; n < 5; n++)
                ListBox_AddString(hList1, szList[n]);
            //コンボボックスの初期値
            ComboBox_SetCurSel(hCombo1, nAddress);
            ListBox_SetCurSel(hList1, nPet);
            wsprintf(szBuf, TEXT("%03d"), nPos);
            Edit_SetText(hEdit1, szBuf);
            return TRUE;
        case WM_COMMAND:
            switch (LOWORD(wp)) {
                case IDCANCEL:
                    EndDialog(hDlg, IDCANCEL);
                    return TRUE;
                case IDOK:
                    if (nSex == 0)
                        lstrcpy(szText[0], TEXT("男が選択されました"));
                    else
                        lstrcpy(szText[0], TEXT("女が選択されました"));
                    if (nNation == 0)
                        lstrcpy(szText[1], TEXT("日本が選択されました"));
                    else
                        lstrcpy(szText[1], 
                        TEXT("日本以外が選択されました"));
                    if (n20 == 0)
                        lstrcpy(szText[2], TEXT("20歳未満です"));
                    else
                        lstrcpy(szText[2], TEXT("20歳以上です"));
                    wsprintf(szText[3], TEXT("%sが選択されました"),
                             szCombo[nAddress]);
                    wsprintf(szText[4], TEXT("%sが選択されました"),
                             szList[nPet]);
                    wsprintf(szText[5],
                             TEXT("スクロールバーの位置=%03d"), nPos);
                    InvalidateRect(hMain, NULL, TRUE);
                    EndDialog(hDlg, IDOK);
                    return TRUE;
                case IDC_RADIO1:
                    nSex = 0;
                    lstrcpy(szText[0], TEXT("男が選択されました"));
                    InvalidateRect(hMain, NULL, TRUE);
                    return TRUE;
                case IDC_RADIO2:
                    nSex = 1;
                    lstrcpy(szText[0], TEXT("女が選択されました"));
                    InvalidateRect(hMain, NULL, TRUE);
                    return TRUE;
                case IDC_RADIO3:
                    nNation = 0;
                    lstrcpy(szText[1], TEXT("日本が選択されました"));
                    InvalidateRect(hMain, NULL, TRUE);
                    return TRUE;
                case IDC_RADIO4:
                    nNation = 1;
                    lstrcpy(szText[1], TEXT("日本以外が選択されました"));
                    InvalidateRect(hMain, NULL, TRUE);
                    return TRUE;
                case IDC_CHECK1:
                    if (Button_GetCheck(hCheck1) == BST_CHECKED) {
                        n20 = 1;
                        lstrcpy(szText[2], TEXT("20歳以上です"));
                    } else {
                        n20 = 0;
                        lstrcpy(szText[2], TEXT("20歳未満です"));
                    }
                    InvalidateRect(hMain, NULL, TRUE);
                    return TRUE;
                case IDC_COMBO1:
                    id = ComboBox_GetCurSel(hCombo1);
                    wsprintf(szText[3],
                             TEXT("%sが選択されました"), szCombo[id]);
                    InvalidateRect(hMain, NULL, TRUE);
                    nAddress = id;
                    return TRUE;
                case IDC_LIST1:
                    id = ListBox_GetCurSel(hList1);
                    wsprintf(szText[4],
                             TEXT("%sが選択されました"), szList[id]);
                    InvalidateRect(hMain, NULL, TRUE);
                    nPet = id;
                    return TRUE;
                case IDC_EDIT1:
                    nPos = GetDlgItemInt(
                        hDlg, IDC_EDIT1, &bSuccess, FALSE);
                    if (nPos > 100)
                        nPos = 100;
                    if (nPos < 0)
                        nPos = 0;
                    ScrollBar_SetPos(hScrol1, nPos, TRUE);
                    wsprintf(szText[5],
                             TEXT("スクロールバーの位置=%03d"), nPos);
                    InvalidateRect(hMain, NULL, TRUE);
                    return TRUE;
            }
            return FALSE;
    }
    return FALSE;
}