2012-10-24 3 views
1

네이티브 C++-mfc 응용 프로그램에서 사용자 지정 컨트롤에 액세스해야합니다. 나는 컨트롤의 내용을 읽을 필요가있다. 컨트롤은 두 개의 버튼과 버튼 사이의 레이블로 구성됩니다. 라벨에는 월과 일년이 포함되어 있으며 한 달 뒤로 또는 앞으로 이동할 수있는 버튼이 있습니다. 이 컨트롤에서 텍스트를 읽고 두 버튼에 액세스하는 방법이 있습니까?C# 네이티브 C++ 응용 프로그램에서 액세스 제어

컨트롤이있는 창에 이미 액세스 할 수 있습니다. 따라서 회사에서 제공하는 프레임 워크를 사용하고 있습니다. 그러나이 프레임 워크에서는 언급 된 컨트롤에서 텍스트와 버튼을 가져올 수 없습니다.

답변

0

당신은 (에서의 PInvoke)는 Win32 API에서 FindWindowGetWindowText를 사용해야합니다 :

FindWindow : 만 자막으로

[DllImport("user32.dll", SetLastError = true)] 
static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

찾기 창을.

[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)] 
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName); 

또한 호출 할 수 있습니다 FindWindow(default(string), lpWindowName) 또는 FindWindow((string)null, lpWindowName)

GetWindowText : 당신이 첫 번째 매개 변수로 IntPtr.Zero을 통과해야합니다

복사 지정된 윈도우의 텍스트 (MSDN에서) 제목 표시 줄 (있는 경우)을 버퍼에 넣습니다. 지정된 윈도우가 컨트롤이면 컨트롤의 텍스트는이 창을 취득하기 위해 노력하고,

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); 
+0

이 좋아 복사됩니다. 그러나 나는 이미 창문을 가지고있다. 창문 안에 통제가 필요해. – Tomtom

+0

win32의 각 컨트롤이 창입니다. 'spy ++'를 사용하여 컨트롤의 핸드를보십시오. find 컨트롤은 텍스트를 처리하고 가져옵니다. – Ria

0

컨트롤에 창 핸들로 액세스해야합니다. 따라서 네이티브 응용 프로그램 윈도우의 윈도우 핸들을 얻어 레이블과 윈도우 핸들 (FindWindow WinAPI 함수)을 찾으십시오. 그런 다음 창에 각각의 창 메시지를 보내 텍스트를 가져 오거나 단추를 "밀어"낼 수 있습니다.

관련 문제