현재 C 프로그램에서 메시지 상자를 사용하여 사용자에게 정보를 제공하고 있지만 다른 모든 형태의 응용 프로그램 뒤에 메시지 상자가 나타납니다.MessageBox가 모든 양식 위에 팝업되게하려면 어떻게해야합니까?
모든 양식 앞에 표시되도록하려면 어떻게 가져 오거나 상위를 설정합니까?
MessageBox(0,error_msg, "Error - No Algorithm", MB_OK);
현재 C 프로그램에서 메시지 상자를 사용하여 사용자에게 정보를 제공하고 있지만 다른 모든 형태의 응용 프로그램 뒤에 메시지 상자가 나타납니다.MessageBox가 모든 양식 위에 팝업되게하려면 어떻게해야합니까?
모든 양식 앞에 표시되도록하려면 어떻게 가져 오거나 상위를 설정합니까?
MessageBox(0,error_msg, "Error - No Algorithm", MB_OK);
모든 양식 뒤에 표시되는 이유는 소유자 창이 지정되지 않았기 때문입니다. 따라서 바탕 화면의 바로 위에 나타나게됩니다. 문제는 당신의 다른 윈도우가 이미 데스크톱 윈도우를 덮고 있기 때문에, 그들은 당신의 메시지 박스를 은밀히 계속해서 덮어 버리는 것입니다.
의심되는 솔루션은 메시지 상자의 소유자로 Windows 중 하나를 지정하는 것입니다.
MessageBox(hWnd, // the window handle for your owner window
error_msg, // the message to be displayed
"Error - No Algorithm", // the title
MB_OK); // flags indicating contents and behavior
을 documentation 추가 정보를 제공합니다 : 당신은 함수의 첫 번째 인수로 자신의 창 핸들 (HWND
)를 지정하여 그렇게.
MessageBox에 첫 번째 매개 변수로 부모를 HWND는 : 여기
내가 현재 메시지 상자를 표시하기 위해 사용하고 코드입니다.0
또는
NULL
은 "부모 없음"을 의미하므로 결과 메시지 상자는 모달이 아닙니다. 원하는 동작을 얻으려면 부모 HWND를 제공해야합니다.
안녕 paulcam, 감사합니다. C 코드에서 HWND를 가져 오는 방법을 알 수 있습니까? 현재 HWND를 얻는 방법에 대한 지침이나 예를 나에게 알려줄 수 있습니까? – Lynnooi
실제로는 소유자 *가 없음을 의미합니다. "상위"창과 "소유자"창 사이에는 차이가 있습니다. Raymond Chen은 차이점에 대해 설명합니다 (이 기사의 내용) (http://blogs.msdn.com/b/oldnewthing/archive/2010/03/15/9978691.aspx). –
@user : 창 핸들을 추적하는 데 사용하는 변수가 있어야합니다. 이것은'CreateWindow' 또는'CreateWindowEx' 함수에 의해 리턴 된 값입니다. Visual Studio의 상용구 코드는 기본적으로'hWnd'라는 이름을 만듭니다. 이것은 좋은 이름입니다. –
늦게이 클래스를 사용하여 클래스 또는 제목으로 검색 FindWindow
을 사용하고 HWND
첫 번째 매개 변수로 MessageBox
에 제공합니다.
어쨌든 내가 폼 이름을 안다면 hwnd를 얻을 수 있습니까? 이것은 내 응용 프로그램을 다른 사람들의 파트에 연결했기 때문에 hwnd를 내 함수에 전달할 수 없었기 때문입니다. – Lynnooi
@user : 그게 무슨 뜻인지 이해가 안됩니다. 우선, C에는 "폼"이 없습니다. Windows API에는 * windows *가 있지만 "폼"이 없습니다. 그리고 그 창문에는 이름이 없습니다. 창 제목 (또는 캡션)이 있지만 고유 할 필요는 없습니다. * 당신이 소유자로 지정한 창은 로컬로 소유 한 창 중 하나를 사용하십시오. –
죄송합니다. 저는 C 코딩을 처음 접했습니다. 또는 hwnd를 얻을 수있는 방법에 대한 몇 가지 예를 제발 제공해 주시겠습니까? – Lynnooi