изменения Dialog API?
изменения Dialog API?
в одном из моих плагинов есть динамически изменяемое окно.
на нем есть две полосы прокрутки, выполненные текстоовыми строками типа таких: =========|==========
раньше, шелчек в любое место этой строки обрабатывался, и бегунок перемещался в эту позицию, но с установки фара 1.7. альфа 6 (1973) (если я не ошибаюсь) шелчки мыши перестали обрабатываться.
это плановое изменение? если да, то как мне быть теперь? если нет, то исправьте этот баг, пожалуйста.
на нем есть две полосы прокрутки, выполненные текстоовыми строками типа таких: =========|==========
раньше, шелчек в любое место этой строки обрабатывался, и бегунок перемещался в эту позицию, но с установки фара 1.7. альфа 6 (1973) (если я не ошибаюсь) шелчки мыши перестали обрабатываться.
это плановое изменение? если да, то как мне быть теперь? если нет, то исправьте этот баг, пожалуйста.
FARFlipper, FARdroid, qPlayEx, Mr.Ripper
можно. вот обработчик кликов мыши:
switch(Msg)
{
case DN_INITDIALOG:
/* тра ля ля*/
case DN_ENTERIDLE:
/* тра ля ля*/
case DN_MOUSECLICK:
switch (Param1)
{
case 4: //Volume
Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,(long)&Rect);
Pos = ((MOUSE_EVENT_RECORD*)Param2)->dwMousePosition.X-Rect.Left-12;
JmpToVolumePosition(Pos);
SetVolumePosition(hDlg);
SetTime(hDlg);
SetStatus(hDlg, qpStatus);
SetTrackPosition(hDlg);
return TRUE;
case 6: //Track
Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,(long)&Rect);
Pos = ((MOUSE_EVENT_RECORD*)Param2)->dwMousePosition.X-Rect.Left-5;
JmpToTrackPosition(Pos);
SetTrackPosition(hDlg);
SetStatus(hDlg, qpStatus);
SetVolumePosition(hDlg);
SetTime(hDlg);
return TRUE;
case 1: //Time
Opt.ReverseTime = !Opt.ReverseTime;
SetTime(hDlg);
SetStatus(hDlg, qpStatus);
SetTrackPosition(hDlg);
SetVolumePosition(hDlg);
return TRUE;
}
вот. все case N - соответствующие номера из вот этой структуры
struct InitDialogItem InitItems[]={
/* 0 */{DI_DOUBLEBOX, 3, 1,68, 9, 0, 0, 0, 0,(char *)MMain},
/* 1 */{DI_TEXT, 5, 2, 0, 0, 0, 0, 0, 0," 00:00"},
/* 2 */{DI_TEXT, 12, 2, 0, 0, 0, 0, DIF_SHOWAMPERSAND, 0,NULL},
/* 3 */{DI_TEXT, 5, 4, 0, 0, 0, 0, 0, 0," Stop "},
/* 4 */{DI_TEXT, 12, 4, 0, 0, 0, 0, 0, 0,VolumeBar},
/* 5 */{DI_TEXT, 34, 4, 0, 0, 0, 0, 0, 0,"<<< Volume"},
/* 6 */{DI_TEXT, 5, 6, 0, 0, 0, 0, 0, 0,TrackBar},
/* 7 */{DI_TEXT, 5, 7, 0, 0, 0, 0, 0, 0,""},
/* 8 */{DI_BUTTON, 5, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyRev},
/* 9 */{DI_BUTTON, 9, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyPlay},
/* 10 */{DI_BUTTON, 13, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyPause},
/* 11 */{DI_BUTTON, 17, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyStop},
/* 12 */{DI_BUTTON, 21, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyForw},
/* 13 */{DI_BUTTON, 35, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,""},
/* 14 */{DI_BUTTON, 39, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,"[R]"},
/* 15 */{DI_TEXT, 44, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MRMNone}
};
приложение я не пепрекомпилировал, просто смемнил версию фара и все перестало работать
switch(Msg)
{
case DN_INITDIALOG:
/* тра ля ля*/
case DN_ENTERIDLE:
/* тра ля ля*/
case DN_MOUSECLICK:
switch (Param1)
{
case 4: //Volume
Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,(long)&Rect);
Pos = ((MOUSE_EVENT_RECORD*)Param2)->dwMousePosition.X-Rect.Left-12;
JmpToVolumePosition(Pos);
SetVolumePosition(hDlg);
SetTime(hDlg);
SetStatus(hDlg, qpStatus);
SetTrackPosition(hDlg);
return TRUE;
case 6: //Track
Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,(long)&Rect);
Pos = ((MOUSE_EVENT_RECORD*)Param2)->dwMousePosition.X-Rect.Left-5;
JmpToTrackPosition(Pos);
SetTrackPosition(hDlg);
SetStatus(hDlg, qpStatus);
SetVolumePosition(hDlg);
SetTime(hDlg);
return TRUE;
case 1: //Time
Opt.ReverseTime = !Opt.ReverseTime;
SetTime(hDlg);
SetStatus(hDlg, qpStatus);
SetTrackPosition(hDlg);
SetVolumePosition(hDlg);
return TRUE;
}
вот. все case N - соответствующие номера из вот этой структуры
struct InitDialogItem InitItems[]={
/* 0 */{DI_DOUBLEBOX, 3, 1,68, 9, 0, 0, 0, 0,(char *)MMain},
/* 1 */{DI_TEXT, 5, 2, 0, 0, 0, 0, 0, 0," 00:00"},
/* 2 */{DI_TEXT, 12, 2, 0, 0, 0, 0, DIF_SHOWAMPERSAND, 0,NULL},
/* 3 */{DI_TEXT, 5, 4, 0, 0, 0, 0, 0, 0," Stop "},
/* 4 */{DI_TEXT, 12, 4, 0, 0, 0, 0, 0, 0,VolumeBar},
/* 5 */{DI_TEXT, 34, 4, 0, 0, 0, 0, 0, 0,"<<< Volume"},
/* 6 */{DI_TEXT, 5, 6, 0, 0, 0, 0, 0, 0,TrackBar},
/* 7 */{DI_TEXT, 5, 7, 0, 0, 0, 0, 0, 0,""},
/* 8 */{DI_BUTTON, 5, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyRev},
/* 9 */{DI_BUTTON, 9, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyPlay},
/* 10 */{DI_BUTTON, 13, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyPause},
/* 11 */{DI_BUTTON, 17, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyStop},
/* 12 */{DI_BUTTON, 21, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MKeyForw},
/* 13 */{DI_BUTTON, 35, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,""},
/* 14 */{DI_BUTTON, 39, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,"[R]"},
/* 15 */{DI_TEXT, 44, 8, 0, 0, 0, 0, DIF_NOBRACKETS|DIF_NOFOCUS, 0,(char*)MRMNone}
};
приложение я не пепрекомпилировал, просто смемнил версию фара и все перестало работать
FARFlipper, FARdroid, qPlayEx, Mr.Ripper
эххх нет времени написать этот тестовый плагин... а почему не запускается? там все просто до невозможности. у нескольких знакомых стоит и прекрасно работает.t-rex wrote:У меня твой плагин вобще не запускается. Выложи тестовый плагин с сорцами где видно багу.
делаю я это это чтобы определить, куда по полосе прокрутки ткнул юзер, чтобы перемотать туда звуковой файл.t-rex wrote: И также я всё ни как не пойму нафига ты вот это делаешь:
Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,(long)&Rect);
Pos = ((MOUSE_EVENT_RECORD*)Param2)->dwMousePosition.X-Rect.Left-12;
это можно сделать как-то иначе?
FARFlipper, FARdroid, qPlayEx, Mr.Ripper