Описана структура
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct DATETIMEPICKERINFO
{
public uint cbSize;
public RECT rcCheck;
public uint stateCheck;
public RECT rcButton;
public uint stateButton;
public IntPtr hwndEdit;
public IntPtr hwndUD;
public IntPtr hwndDropDown;
}
импорт SendMessage из user32.dll
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, APIsEnums.DateTimePickerMessage msg, int wParam, ref APIsStructs.DATETIMEPICKERINFO lParam);
ниже код проверяет если элемент DateTimePicker то заполняем структуру
if (_control is DateTimePicker)
{
APIsStructs.DATETIMEPICKERINFO info = new APIsStructs.DATETIMEPICKERINFO();
info.cbSize = (uint)Marshal.SizeOf(typeof(APIsStructs.DATETIMEPICKERINFO));
APIsUser32.SendMessage(_control.Handle, APIsEnums.DateTimePickerMessage.DTM_GETDATETIMEPICKERINFO, 0, ref info);
if (m.WParam == info.hwndDropDown || m.WParam == info.hwndEdit || m.WParam == info.hwndUD)
{
...
return false;
}
}
структура остается не заполненная, кроме cbSize ??
Здравствуйте, ЛёХыЧ, Вы писали:
если посмотреть
сюда то можно увидеть
cbSize
DWORD
Set to sizeof(DATETIMEPICKERINFO). This member must be set before sending a pointer to this structure with the DTM_GETDATETIMEPICKERINFO message, or the DateTime_GetDateTimePickerInfo macro.
может в этом проблема
Здравствуйте, toulon, Вы писали:
спасибо за ссылку
но перед тем как написать здесь я ее прочитал.
может конечно я что то неправильно понял но там написано, что в структуре DATETIMEPICKERINFO должен быть установлен размер этой структуры в cbSize, мне показалась я это сделал вот этой строкой
info.cbSize = (uint)Marshal.SizeOf(typeof(APIsStructs.DATETIMEPICKERINFO));
Здравствуйте, ЛёХыЧ, Вы писали:
ЛёХ>Здравствуйте, toulon, Вы писали:
ЛёХ>спасибо за ссылку но перед тем как написать здесь я ее прочитал.
ЛёХ>может конечно я что то неправильно понял но там написано, что в структуре DATETIMEPICKERINFO должен быть установлен размер этой структуры в cbSize, мне показалась я это сделал вот этой строкой
ЛёХ>ЛёХ>info.cbSize = (uint)Marshal.SizeOf(typeof(APIsStructs.DATETIMEPICKERINFO));
ЛёХ>
извиняюсь, не заметил