|
|
|
|
Where can I find good samples for Casting in VC++/MFC/Pointers and technique for handeling Windows messages.
Nilesh Korpe
Mumbai
India
|
|
|
|
|
|
Suppose in Winsock if A send "1234" to peer B. Just when "12" is arrived at Peer B, the network is disconnected. Will peer B be notified with FD_READ and receive "12"? What is the case if the receiving buffer is just full after receiving "12"?
Nilesh Korpe
|
|
|
|
|
|
nilrshkorpe wrote: Where can I find good samples for Casting in VC++/MFC/Pointers and technique for handeling Windows messages.
I think you are mixing a little bit everything. Casting and windows messages are things completely different .
Here[^] is a good article about the different cast method.
For windows messages, this is more tricky because it is a rather large subject. What do you want to know precisely ?
|
|
|
|
|
Which messages I should handel in which class like(CDocument or CView or Cmainframe...)in SDI
Sorry May be junk question but pls bear with me I am very new to all this stuff
and totally confused.....
Nilesh Korpe
|
|
|
|
|
Nilesh Korpe wrote: Which messages I should handel in which class like(CDocument or CView or Cmainframe...)in SDI
Err.. that depends a lot of what you want to do. What could help you a lot is to find a book (or tutorial) about the MFC that explains that.
|
|
|
|
|
can you suggest good totorial or book for this fundamentals.
Nilesh Korpe
|
|
|
|
|
I have made simple SDI application with CHTMLVIEW and added few menus
with there methods but menus appear gray (when properties are set properly)
when I run the code, how to get the menus active.
|| ART OF LIVING ||
|
|
|
|
|
When I added code for getting the URL while navigation
surprisingly my menu commands got visible and active.
as well as tool bar became visible
void CMainFrame::SetAddress(LPCTSTR lpszUrl)
{
m_wndDlgBar.GetDlgItem(IDC_EDIT1)->SetWindowText(lpszUrl);
}
#include "MainFrm.h"
void CWebBrowseView::OnDocumentComplete(LPCTSTR lpszUrl)
{
((CMainFrame*)GetParentFrame())->SetAddress(lpszUrl);
}
|| ART OF LIVING ||
|
|
|
|
|
Dear all,
I am using WM_LBUTTTONUP notification message to capture the (x, y) of user clicks in an mfc application, which hosts a microsoft web browser activex control.
I have added WM_LBUTTTONUP event handler to the application and tried to print some statements there. But apparently that event handler is never executed !!!
Note: I am using visual studio 2003. and the user will be clicking on the microsoft web browser control.
Thank you
llp00na
|
|
|
|
|
Post the code (with the message map entry).
Did you try to put a breakpoint with your debugger ?
|
|
|
|
|
yah this is problem,none of events get recognised there
|| ART OF LIVING ||
|
|
|
|
|
shivditya wrote: yah this is problem,none of events get recognised there
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPilotStudyDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON_GO, OnBnClickedButtonGo)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
FILE* trial = fopen("Trial.txt","w");
void CPilotStudyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
fprintf(trial, "\nAnything ...");
// TODO: Add your message handler code here and/or call default
CDialog::OnLButtonDown(nFlags, point);
}
No i am not using any breakpoints
llp00na
|
|
|
|
|
What is this line doing outside of your function ?
FILE* trial = fopen("Trial.txt","w");
Instead of using that, use your debugger and put a breakpoint there, it's much more safer than everything you could write .
|
|
|
|
|
This line creates a file in which i will be saving the x,y of user clicks. But i just dont get it, why this is never executed !!!
void CPilotStudyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
fprintf(trial, "\nAnything ...");
// TODO: Add your message handler code here and/or call default
CDialog::OnLButtonDown(nFlags, point);
}
even though i dont believe that FILE* trial = fopen("Trial.txt","w"); is the trouble i have taken it off. However OnLButtonDown still never gets called
llp00na
|
|
|
|
|
llp00na wrote: However OnLButtonDown still never gets called
How do you know that ?
Please, for the third time I ask you: use your debugger ! Put a breakpoint in the function and press F5. Tell me if the program stops in the function or not.
|
|
|
|
|
I am sorry.
I have done what u told me. and no it does not stop at all.
llp00na
-- modified at 8:53 Wednesday 10th May, 2006
|
|
|
|
|
That's strange. Are you sure you press the left button (I don't know, maybe you inverted them ) ? Try both of them to be sure.
Post maybe the code of the header file of your dialog and the source code also. Please, use the <pre> tags just above the emoticons (otherwise it will look horrible).
|
|
|
|
|
Yep, i am positive. I have also pressed both buttons but my program runs smoothly and never stops.
here is my header file
#pragma once
#include "explorer1.h"
class CPilotStudyDlg : public CDialog
{
public:
CPilotStudyDlg(CWnd* pParent = NULL);
enum { IDD = IDD_PILOTSTUDY_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
HICON m_hIcon;
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
CExplorer1 m_webBrowser;
CString urlAddress;
afx_msg void OnBnClickedButtonGo();
DECLARE_EVENTSINK_MAP()
void NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL);
void DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};
my cpp file is:
#include "stdafx.h"
#include "PilotStudy.h"
#include "PilotStudyDlg.h"
#include ".\pilotstudydlg.h"
#include <mshtml.h>
#include <mshtmdid.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
CPilotStudyDlg::CPilotStudyDlg(CWnd* pParent )
: CDialog(CPilotStudyDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
urlAddress = "www.google.com";
}
void CPilotStudyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EXPLORER1, m_webBrowser);
}
BEGIN_MESSAGE_MAP(CPilotStudyDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_GO, OnBnClickedButtonGo)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
BOOL CPilotStudyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
m_webBrowser.Navigate(urlAddress, NULL, NULL, NULL, NULL);
return TRUE;
}
void CPilotStudyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CPilotStudyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CPilotStudyDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CPilotStudyDlg::OnBnClickedButtonGo()
{
GetDlgItemText(IDC_EDIT_ADDRESS, urlAddress);
if(urlAddress.GetLength() == 0){
return;
}
m_webBrowser.Navigate(urlAddress, NULL, NULL, NULL, NULL);
}
BEGIN_EVENTSINK_MAP(CPilotStudyDlg, CDialog)
ON_EVENT(CPilotStudyDlg, IDC_EXPLORER1, 252, NavigateComplete2Explorer1, VTS_DISPATCH VTS_PVARIANT)
ON_EVENT(CPilotStudyDlg, IDC_EXPLORER1, 259, DocumentCompleteExplorer1, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()
void CPilotStudyDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
CString strURL = m_webBrowser.get_LocationURL();
SetDlgItemText(IDC_EDIT_ADDRESS, strURL);
}
FILE* trial = fopen("Trial.txt","w");
void CPilotStudyDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
if(m_webBrowser.get_ReadyState() != READYSTATE_COMPLETE)
return;
}
void CPilotStudyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
fprintf(trial, "\nAnything ...");
CDialog::OnLButtonDown(nFlags, point);
}
llp00na
-- modified at 9:03 Wednesday 10th May, 2006
|
|
|
|
|
Try to move both lines:
afx_msg void OnBnClickedButtonGo();
and
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
above the DECLARE_MESSAGE_MAP() line
|
|
|
|