У меня проблемы с настройкой ландшафтного режима в моем приложении.
У меня есть папка / res, содержащая папку макета и папку области макета
layout
-----main.xml
layout-land
-----main.xml
Мой /layout-land/main.xml содержит элементы пользовательского интерфейса, отличные от /layout/main.xml. Как я могу соответствующим образом сопоставить каждый макет, когда пользователь переключился в альбомный режим и наоборот?
Я в основном показываю полноэкранный ImageView, когда пользователь переключается в альбомный режим. ImageView загрузит изображение из Интернета и отобразит его. Чтобы вернуться в портретный режим, нужно просто вернуться в мой портретный режим, в котором есть другой набор компонентов пользовательского интерфейса.
Я получаю сбой при переключении в альбомный режим:
, потому что я не могу получить идентификатор:
chartImageViewLandscape = (ImageView) this.findViewById(R.id.chartImageViewLandscape);
chartImageViewLandscape находится в / layout-land / main. есть ли способ создать окно внутри TThread, которое может обрабатывать сообщения внутри потока?
вот что я имею в виду
function TDataThread.WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := 0;
case uMsg of
WM_DATA_AVA: MessageBox(0, 'Data Avaibale', 'Test', 0);
else Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
end;
end;
Procedure TDataThread.Create(const Title:String);
begin
HAppInstance := HInstance;
with WndClass do
begin
Style := 0;
lpfnWndProc := @WindowProc; //The Error Lies here (Variable Required)
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := HAppInstance;
hIcon := 0;
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := COLOR_WINDOW;
lpszMenuName := nil;
lpszClassName := 'TDataForm';
end;
Windows.RegisterClass(WndClass);
MainForm := CreateWindow('TDataForm', PAnsiChar(Title), WS_DLGFRAME , XPos, YPos, 698, 517, 0, 0, hInstance, nil);
end;
мне нужна форма, чтобы я мог получить ее дескриптор из другого приложения. Используя FindWindow и FindWindowEx, если необходимо