Problem in VC++ message handling

Hello friends,
First off, please check below code. Well, I am developing printing functionality from the windows mobile device using vc++. (I am novice to the vc++ ). For printing, we are using third party DLLs. Below are important snippet required to explain the complete picture. Currently, the problem I am more concerning is printing multiple pages. For this, we have API and everything. While printing using “mpPreviewDialog” API (provided by third party in form of DLL) and when it recognize more than one pages required, it raises/passes “MP_EVENT_REQ_NEW_PAGE” message from printing library, ie mpPreviewDialog itself, to the handle hWnd of “mpPreviewDialog(hWnd,__)”. Now, to handle this message, we have put all logic portion in one class which is inherited from CWnd so that we can override “DefWindowProc” function to achieve our goal. But while I run the application and command print for multiple page, it only prints the first page perfectly and then just get hanged. Thus, it fails to handle the “MP_EVENT_REQ_NEW_PAGE” message of “DefWindowProc” function. What all I need is to handle this message and execute the case MP_EVENT_REQ_NEW_PAGE: while printing and multiple page required. Because in this case it issues the message but appropriate case never get executed. I hope you got my point. Please let me know how to solve this. Am I missing something? Thank you very much for your time in advance.

class CFxPrinterWnd : public CWnd
{
DECLARE_DYNCREATE(CFxPrinterWnd)

public:
CFxPrinterWnd(); // protected constructor used by dynamic creation
virtual ~CFxPrinterWnd();

public:
#ifdef _DEBUG
virtual void AssertValid() const;
#ifndef _WIN32_WCE
virtual void Dump(CDumpContext& dc) const;
#endif
#endif

protected:
DECLARE_MESSAGE_MAP()
public:
int PrintReport(HWND hwnd, int flg);
protected:
virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
};

Int CFxPrinterWnd::PrintReport (HWND hWnd, int flg)
{
_______

This contains “mpPreviewDialog” API call which starts printing and issue “MP_EVENT_REQ_NEW_PAGE” message if more than one page required.
}

LRESULT CFxPrinterWnd::DefWindowProc(___,___,___)
{
Switch (message)
{
___

Case MP_EVENT_REQ_NEW_PAGE: //This debug point never get focused while printing and new page required.
___This point is never get executed
___
}
}

Button1 Click Event
{
hWnd = ::FindWindow(NULL, _T(“del”));
CFxPrinterWnd wnd;
Wnd.Create(_______________________);
Ret = wnd.PrintReport(hWnd, 0);
___
___
mpPreviewDialog (hWnd____); //This is the printing API where MP_EVENT_REQ_NEW_PAGE message get raised while printing if new page
//required.
wnd.DestroyWindow();
}

---
Kind Regards,
Sachin Patel

I am a bit rusty with MFC but I think your example is a bit incomplete. the mpPreviewDialog, where should that be and the 'click event' - in which dialog is that? It is important to know since you need to identify in which message loop the message lands. Are you also sure that mpPreviewDialog posts that message?

How does the mpPreviewDialog look like, is it in the CFxPrinterWnd class?

Normally also it is better to do a handler for your message instead of squeezing it into DefWindowProc.

Thank you for a quick reply.
- Yes mpPreviewDialog itself posts the message for new page required.
- mpPreviewDialog is the function embedded in the third party DLL. We are just using it.
- UI window which contain Print button is already designed in some other internal tool. So, in the click event of this Print button, we just called the function we developed in VC++ for further printing process.

The only issue for me is to know: How and where to handle this message to take the required appropriate action in response of this message. Please let me know if you need more details.

Thank you,
--
Sachin.
Topic archived. No new replies allowed.