hi all,
i have wrote a notification bubble with text input control for user to input there email.(MFC)
Code:
#define IDS_DEFAULTHTMLMESSAGE _T("<html><body><form id='ads' name='ads' action=''><p> pls input your email <input type='text' name='email'><input type='button' name='cmd:10' value='Ok' ></p></form></body></html>");
pndAdd = (SHNOTIFICATIONDATA*)malloc(sizeof(SHNOTIFICATIONDATA));
pndAdd->dwID = 4711;
pndAdd->clsid = guidPPCAlertsApp;
pndAdd->npPriority = SHNP_INFORM;
pndAdd->csDuration = 20;
pndAdd->hwndSink = this->m_hWnd
pndAdd->pszHTML = IDS_DEFAULTHTMLMESSAGE;
pndAdd->hicon = m_hNotifactionIcon;
pndAdd->cbStruct = sizeof(SHNOTIFICATIONDATA);
pndAdd->pszTitle = IDS_DEFAULTTITLE;
pndAdd->grfFlags = SHNF_FORCEMESSAGE;
SHNotificationAdd(pndAdd);
........
as we known, we use WM_COMMAND to handle Command Button Click,but when we got the click, how should i do for getting the text that user input in the html control?
Code:
BOOL CPOutlookTestDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
if(wParam==10){
SHNotificationRemove(&guidPPCAlertsApp, 4711);
delete pndAdd;
return true;
}
return CPOutlookTestDlg::OnCommand(wParam,lParam);
}
thanks.
seaman
When you call SHNotificationAdd the call is asynchronous and the return value indicates if the notification was successfully added.
To receive return values from the notification bubble itself there are several ways.
1. Most bubbles have buttons, as in the example:
<input type=button name='cmd:10' value='Ok'>
In this case when the user clicks the 'OK' button your sink window will receive a WM_COMMAND with a wParam of 10
2. Bubbles may also contain links which will send you a WM_COMMAND as well - from the example:
<a href=\"cmd:11\">Test Link</a>
3. Finally you can have a form in your HTML and have it submitted back to your sink window. The msdn example doesn't appear to show this properly but here's an example:
<form method='get' action='TestBubble://Test'><table width=100% cellspacing=0 cellpadding=0><tr><td colspan=2><b>Choose a fruit:</b><p><input type='radio' value='0' id='Apples' checked name='Fruit'><label for='Apples'>Apples</label><br><input type='radio' value='1' id='Oranges' name='Fruit'><label for='Oranges'>Oranges</label></p></td><td><input type='submit' value='Submit' name='Submit'></td></tr><tr><td width=42%%><a href='cmd:12288'>Settings</a></td></tr></table></form>"
When the submit button is pressed your sink window will receive a WM_NOTIFY with a NMSHN structure:
typedef struct _NMSHN
{
NMHDR hdr;
LPARAM lParam;
DWORD dwReturn;
union
{
LPCTSTR pszLink;
BOOL fTimeout;
POINT pt;
};
} NMSHN;
typedef struct tagNMHDR
{
HWND hwndFrom;
UINT idFrom;
UINT code; // NM_ code
} NMHDR;
typedef NMHDR FAR * LPNMHDR;
The hdr.code member will be SHNN_LINKSEL; the pszLink member will contain the URL encoded form submission - eg "TestBubble://Test?Fruit=Apples" and wParam will contain the dwID of the notification (useful if you have multiple notifications of the same type)
Tim