2011-05-04 6 views
0

윈도우 핸들 HWND hwnd을 이미 사용할 수 있습니다. 형식 문자열을이 hwnd에서 설명하는 창에 인쇄하려고합니다. Windows API에 익숙하지 않아서 고맙습니다. 예를 들어형식 문자열을 창에 인쇄하는 방법은 무엇입니까?

:

num = 23; 
printFunction(hwnd, "number is %d", num); 

이 문제를 해결하는 기능이 있습니까? 고맙습니다!

업데이트 : IDA Pro SDK 사용 중에이 문제가 발생합니다. 나는이 하위 창에 형식 문자열을 인쇄하려면 내가 서브 윈도우에 hello world 문자열을 인쇄 할 SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)"hello world");를 사용

HWND hwnd = NULL; 
TForm *form = create_tform("Sample subwindow", &hwnd); 

하지만 어떻게해야합니까 :

아래 샘플 서브 윈도우를 만드시겠습니까?

+0

HWND는 어떤 언어 및 어떤 클래스의 창을 나타 냅니까? (최상위 수준/텍스트 상자/목록 상자)? –

+0

@Alex K. 질문이 업데이트되었습니다. :) – Jason

답변

1
sprintf(myString, "number is %d", num); 
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)myString); 
2

정말 간단하지 않습니다.

우선 윈도우 프로 시저를 설정하여 WM_PAINT을 처리해야합니다. 그러면 HDC (Device Context)이 표시됩니다. 이 HDC를 사용하면 DrawText으로 전화하여 문자열을 그릴 수 있습니다. 대체로 sprintf을 사용하여 문자열을 형성해야합니다.

+0

http://books.google.com/books?id=eDvx4Qx63b0C&pg=PA333&lpg=PA333&dq=mfc+drawtext+example&source=bl&ots=v3q7CPjzKc&sig=yws05P0WIvRunEHTy- PxdviAle0 & hl = en & ei = fYzBTeuDBYbm0QGY-Z24Cg & sa = X & book = result & resnum = 10 & ved = 0CGAQ6AEwCQ # v = onepage & q = mfc % 20drawtext % 20example & f = false – yasouser

1

당신은 이미 당신이, 당신은 다음과 유사한 사용할 수있는 텍스트를 보낼 수있는 서브 윈도우가있는 경우 :에 WM_SETTEXT를, 중간 문자열의 텍스트를 포맷

#include <strsafe.h> 
#define MAXSTRING 1024 

CHAR string[MAXSTRING]; 
StringCchPrinf(string, ARRAYSIZE(string), "number is %d", num); 
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)string); 

사용 StringCchPrintf을하고 사용을 해당 문자열을 서브 윈도우에 보내 표시하십시오. 한번에 두 가지 기능을 수행하는 기능은 없지만이 작업을 자주 수행하는 경우이 두 가지를 모두 감싸는 도우미 함수를 작성하는 것을 방해하는 것은 없습니다.

여기는 Windows API 인 StringCchPrintf를 사용했지만 printf()와 같은 C- 풍미 sprintf()를 사용할 수도 있지만 추가 문자열이 매개 변수로 사용됩니다. StringCchPrintf를 사용하는 것은 버퍼 오버런을 피하기 위해 사용하는 추가 길이 매개 변수를 사용하므로 보안 문제가 발생할 수 있으므로 '실제'수행을 계획하는 경우 이러한 '안전한'버전을 파악하는 것이 좋습니다. .)

-이 다른 대답에 어떤 관련이 있는지에

빠른 참고 : Windows에서 화면에 텍스트를 얻는 데 일반적으로 두 가지 기본적인 방법이있다. 가장 간단한 방법은 라벨이나 텍스트 컨트롤을 만들고, 그림을 그려 텍스트를 보내도록하는 것입니다. 유닉스 스타일의 콘솔 기반 환경 (printf 등)을 사용하고 있다면이 방법이 가장 쉽다. 이미 사용하고있는 접근법과 위에 사용하고있는 접근법이 나타납니다. 또 다른 방법은 실제로 직접 텍스트를 그리는 것입니다. DrawText 나 ​​다른 API를 사용하여 Windows가 요청할 때 컨트롤이 다시 그려지도록 Windows에서 여러 가지 요청을 처리하고 자신 만의 컨트롤을 만들어야하므로 상당히 복잡합니다. 이 컨트롤이 사용자를 대신하여 실제로 수행하는 작업입니다. 이렇게하면 텍스트 배치, 글꼴, 색상 등을 완벽하게 제어 할 수 있지만 단순한 애플릿에 대해 일부 상태 또는 결과 텍스트를 표시하려는 경우 다소 과장됩니다. 프로그래밍 Windows 서적에는이 접근법에 대한 자세한 내용이 있습니다.)

관련 문제