안녕하세요
코딩을 하다가 막히는 부분이 생겨서 질문 드립니다
쓰레드를 사용해서 구현하는 부분인데 버튼을 클릭하면 쓰레드를 생성해서
쓰레드함수를 구동시키는 부분인데 이상하게도 쓰레드 함수를 구동하면서
억세스 에러가 발생합니다.
왜 쓰레드함수에서 Form1부분을 찾지 못하는지 도저히 이해가 안갑니다.
다른 테스트 프로그램에서는 아래와 같이 코딩해도 잘 찾는데 이상하네요
혹시 이런경우가 있으시면 답변을 주시면 감사하겠습니다.
참고로 이폼은 MDI의 차일드폼(form1)이며 메인폼(mianform)에서는 억세스가 잘됩니다.
만약 이경우에 있어 form1을 찾지못한다면 hMyForm을 이용해서 Form1.Edit2.text에 접근할 수 있는 방법은 없는지...
구체적으로 설명주시면 감사하겠습니다.
function ThreadFunc1(Info:Pointer): integer; stdcall;
begin
mainform.edit2.text:='1' //이부분을 잘됨 메인폼
Form1.Edit2.text:='1'; //이부분에서 억세스 에러가 발생
ExitThread(4);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ThreadId1: DWORD;
begin
inherited;
hMyForm := handle;
ThreadHandle1 := CreateThread(nil, 0, @ThreadFunc1, nil, 0, ThreadId1);
if ThreadHandle1 = 0 then
ShowMessage('Thread 생성실패');
end;
안녕하세요 언제나 초보 바보감자입니다.
제가 확인을 안해봐서 잘몰르겠지만.
제가 테스트는 안해봤는데
이함수를 폼에 포함시켜보시겠습니까.?
안되는 부분만 뗘서 올리셔두 좋을듯 싶네요.
그럼 즐푸하세요.