自己实现纯win32窗口事件(编辑框输入浮点数,静态框实现超链接,以前网上看见过相似代码自己改哈,以后有用)

/************************主窗口回调函数(放置编辑框的窗口)************************/

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;
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值