Windows 응용 프로그램에서는 SaveAs 대화 상자를 연 후 SaveAs 대화 상자 앞에 팝업 메시지를 표시 할 수 있습니까? 내가 관리 할 수 있었던 것은 대화 상자가 닫힌 후에 나타나는 팝업입니다.SaveAs 대화 상자 앞에 팝업 메시지 표시
C++로 작성된 이전 응용 프로그램을 편집해야하지만 (필자는 아니지만)이 작업을 관리 할 수 없습니다.
일리야
Windows 응용 프로그램에서는 SaveAs 대화 상자를 연 후 SaveAs 대화 상자 앞에 팝업 메시지를 표시 할 수 있습니까? 내가 관리 할 수 있었던 것은 대화 상자가 닫힌 후에 나타나는 팝업입니다.SaveAs 대화 상자 앞에 팝업 메시지 표시
C++로 작성된 이전 응용 프로그램을 편집해야하지만 (필자는 아니지만)이 작업을 관리 할 수 없습니다.
일리야
당신은 할 수 있지만 것
/* ----라는 저장 파일 대화 ---- */
ofn.hwndOwner = hwnd;
ofn.lpstrFile = lpstrFileName;
ofn.lpstrTitle = lpstrTitleName;
res = GetSaveFileNameW(&ofn);
/* ---- fix file extension ---- */
MessageBox(NULL, "Test", "Testing", MB_OK);
감사를 표시하기 위해이 코드의 일부입니다 상당히 해킹 될 수 있습니다. FileDialog를 만들고 모달이 아닌 모덜리스로 열고 숨겨야합니다. 그래서 창은 있지만 거기를 볼 수는 없습니다. "팝업"을 클릭하면 창 대화 상자를 숨김 해제 할 수 있습니다.
당신이 맞다고 이해한다면, 대화 상자를 닫고 메시지를 닫을 때 몇 가지 물건 (예 : 파일 확장자)을 확인해야합니다. 그렇다면 OPENFILENAME Structure의 OFN_ENABLEHOOK 플래그를 확인하십시오. 이 경우 코드는 다음과 같이됩니다 MyHookProc
에 대한
ofn.hwndOwner = hwnd;
ofn.lpstrFile = lpstrFileName;
ofn.lpstrTitle = lpstrTitleName;
/* enables the hook function */
ofn.Flags |= OFN_ENABLEHOOK;
ofn.ofn.lpfnHook = (LPOFNHOOKPROC) MyHookProc;
/* some code here */
res = GetSaveFileNameW(&ofn);
코드처럼 보일 것입니다 :
static UINT CALLBACK MyHookProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_NOTIFY) {
OFNOTIFYW *notify = (OFNOTIFYW *) lParam;
if (notify->hdr.code == CDN_FILEOK) {
/* your code here */
}
}
}
가 당신을 위해 도움이 될 것입니다 바랍니다.
아니요, 예를 들어 SaveAs 대화 상자를 열면 일부 정보 메시지가 표시됩니다. "이 파일은 많은 메모리를 필요로합니다.") 감사합니다! –
이 경우 MyHookProc에서 WM_INITDIALOG 만 처리하면됩니다. – DReJ
흠, 나는 이것을 시도했지만 그것은 Win98에서 하나와 비슷한 저장 대화 상자를 열었습니다 :) –
파일 저장 대화 상자의 GUI를 확장하는 것처럼 들립니다. 사용자 고유의 대화 상자 자원 템플리트를 사용하여 GUI를 확장하고 OFN_ENABLETEMPLATE
을 지정할 수 있습니다. 이것은 얼마나 많은 앱이 문서의 미리보기/메타 데이터를 보여 주는지입니다.
이 대답은 완전히 넓은 의미입니다 –