自己实现纯win32窗口事件(编辑框输入浮点数,静态框实现超链接,以前网上看见过相似代码自己改哈,以后有用)
2009-12-10 11:33
701 查看
/************************主窗口回调函数(放置编辑框的窗口)************************/
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return 0;
}
case WM_CLOSE://单击了“关闭”之后,进入最小化状态
ShowWindow(hDlg, SW_MINIMIZE);
break;
WNDPROC OldProc;//设置自己的窗口过程函数
OldProc = (WNDPROC)SetWindowsLong(hWnd, GWL_WNDPROC, (LONG)NewProc/*自己的窗口过程函数*/);
case WM_CTLCOLORSTATIC://设置静态文本框颜色(一个超级链接)
if (GetDlgItem(hDlg, IDC_ST_HOMEPAGE) == (HWND)lParam)
{
SetTextColor((HDC)wParam, 0xff0000);
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
}
break;
/************************子窗口回调函数(编辑框窗口)************************/
case WM_INITDIALOG://设置窗口过程函数
EditProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_EDIT), GWL_WNDPROC, (LONG)ProcFloat);//编辑框
StaticProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_ST_HOMEPAGE), GWL_WNDPROC, (LONG)ProcLink);//静态文本框 break;
/************************编辑框回调函数(编辑框窗口)************************/
LRESULT CALLBACK ProcFloat(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
if (Msg == WM_CHAR && wParam != ''.'' && (wParam <= ''0'' || wParam >= ''9'') && wParam != VK_BACK)/*不完善自己完善,其他可以加剪贴板*/
{
MessageBeep(MB_OK);
return 0;
}
else
return CallWindowProc(EditProc, hWnd, Msg, wParam, lParam);
}
/************************静态文本框回调函数(编辑框窗口)************************/
LRESULT CALLBACK ProcLink(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_SETCURSOR://设置鼠标在上面时候形状(手型)
SetCursor(LoadCursor(NULL, IDC_HAND));
break;
case WM_LBUTTONDOWN://实现超级链接
ShellExecute(NULL, "open", "http://home.ncust.edu.cn/~titilima", NULL, NULL, SW_SHOWNORMAL);
break;
default:
return CallWindowProc(StaticProc, hWnd, Msg, wParam, lParam);//消息回调
}
return 0;
}
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return 0;
}
case WM_CLOSE://单击了“关闭”之后,进入最小化状态
ShowWindow(hDlg, SW_MINIMIZE);
break;
WNDPROC OldProc;//设置自己的窗口过程函数
OldProc = (WNDPROC)SetWindowsLong(hWnd, GWL_WNDPROC, (LONG)NewProc/*自己的窗口过程函数*/);
case WM_CTLCOLORSTATIC://设置静态文本框颜色(一个超级链接)
if (GetDlgItem(hDlg, IDC_ST_HOMEPAGE) == (HWND)lParam)
{
SetTextColor((HDC)wParam, 0xff0000);
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
}
break;
/************************子窗口回调函数(编辑框窗口)************************/
case WM_INITDIALOG://设置窗口过程函数
EditProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_EDIT), GWL_WNDPROC, (LONG)ProcFloat);//编辑框
StaticProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_ST_HOMEPAGE), GWL_WNDPROC, (LONG)ProcLink);//静态文本框 break;
/************************编辑框回调函数(编辑框窗口)************************/
LRESULT CALLBACK ProcFloat(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
if (Msg == WM_CHAR && wParam != ''.'' && (wParam <= ''0'' || wParam >= ''9'') && wParam != VK_BACK)/*不完善自己完善,其他可以加剪贴板*/
{
MessageBeep(MB_OK);
return 0;
}
else
return CallWindowProc(EditProc, hWnd, Msg, wParam, lParam);
}
/************************静态文本框回调函数(编辑框窗口)************************/
LRESULT CALLBACK ProcLink(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_SETCURSOR://设置鼠标在上面时候形状(手型)
SetCursor(LoadCursor(NULL, IDC_HAND));
break;
case WM_LBUTTONDOWN://实现超级链接
ShellExecute(NULL, "open", "http://home.ncust.edu.cn/~titilima", NULL, NULL, SW_SHOWNORMAL);
break;
default:
return CallWindowProc(StaticProc, hWnd, Msg, wParam, lParam);//消息回调
}
return 0;
}
相关文章推荐
- 使用Win32 API实现限制编辑框输入的功能
- jquery实现input输入框实时输入触发事件代码
- 一开始实现的时候,不知道贝塞尔曲线,自己去思考其他方法实现了。怎么想到用到贝塞尔曲线?以后碰到类似问题,应该先在网上找找都有什么方法实现。
- Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
- 使用JQuery和CSS模拟超链接的用户单击事件的实现代码
- 利用Keydown事件阻止用户输入实现代码
- 利用Keydown事件阻止用户输入实现代码
- jQuery实现input输入时,实时触发事件代码
- ViewPager实现自动翻页功能 --转载出处找不到了,根据自己的理解写个随笔方便以后的记忆以及代码的共享,感谢给我启发的那位高手--第一次写博客哈
- JavaScript事件流 HTML和CSS代码支持页面的外观,JavaScript代码支持页面的行为,而JavaScript与HTML之间的交互是通过事件实现的。事件,是文档或者浏览器窗口中发生
- Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
- 如何在CHtmlView中用OnNewWindow2事件生成自己的浏览器窗口,实现类似于多标签页浏览
- win32窗口编程实例代码,自己敲出来的,仅供新人参考
- iOS 判断一断代码的执行时间(从网上看的,自己实现一下)
- jquery实现input输入框实时输入触发事件代码
- RichEdit控件与父窗口使用消息反射机制实现过滤输入字符(WIN32应用)
- 好久不写代码,网上抄了几段代码改了一下实现自己的追书功能
- 2003 下的GridView的ItemDataBound 与2.0的RowDataBound 事件两段自己代码 控制弹出窗口
- jquery实现input输入框实时输入触发事件代码 ---jQuery 中bind(),live(),delegate(),on() 区别
- 已知道 一个窗口的句柄, 如何扑捉该窗口的onresize 事件,并在onresize 事件中写入自己的代码?