鱼C论坛

 找回密码
 立即注册

核心编程笔记---第一章

热度 6已有 1180 次阅读2015-1-5 22:31 |个人分类:windows核心编程

对于自己写的ErrorShow程序不足的地方的改进。
No.1
Edit_LimitText(GetDlgItem(hwnd,IDC_ERRORSHOW),8);限定Edit控件的输入长度
No.2
EnableWindow(GetDlgItem(hwnd, IDOK), Edit_GetTextLength(hwndCtl) > 0);
当EDIT控件什么也没有输入的时候,按钮不可用。

这两个算是小技巧。
下面是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#include<windowsx.h>
#include <Windows.h>
BOOL  CALLBACK DlgErrorShow (HWND hwnd ,UINT message ,WPARAM wParam ,LPARAM lParam );
int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance,PSTR szCmdLine ,int iCmdShow)
{


 DialogBox(hInstance,LPCTSTR(101),NULL,DlgErrorShow);


}
BOOL  CALLBACK DlgErrorShow (HWND hwnd ,UINT message ,WPARAM wParam ,LPARAM lParam )
{
 HLOCAL hlocal = NULL;
 DWORD dwError,systemLocale;
 BOOL fok;
 HMODULE hDLL;
 switch (message)
 {

 case WM_INITDIALOG:
  Edit_LimitText(GetDlgItem(hwnd,1001),8);
  break;
 case WM_COMMAND:
  switch (LOWORD(wParam))
  {
  case 1001:
   EnableWindow(GetDlgItem(hwnd, 1002), Edit_GetTextLength(GetDlgItem(hwnd,1001)) > 0);
   break;
  case 1002:
   dwError = GetDlgItemInt(hwnd,1001 ,NULL,FALSE);
   systemLocale = MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL);
   fok= FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_ALLOCATE_BUFFER,NULL,dwError,systemLocale,(PTSTR)&hlocal,0,NULL);
   if (!fok)
   {
    hDLL = LoadLibraryEx(L"netmsg.dll",NULL,DONT_RESOLVE_DLL_REFERENCES);
    if (hDLL != NULL)
    {
     fok = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_IGNORE_INSERTS,hDLL,dwError,systemLocale,(PTSTR)&hlocal,0,NULL);
     FreeLibrary(hDLL);
    }
   }
   if (fok &&(hlocal != NULL))
   {
    SetDlgItemText(hwnd,1003,(PCTSTR)LocalLock(hlocal));
    LocalFree(hlocal);
   }
   else
   {
    SetDlgItemText(hwnd,1003,L"No text fount for this error number.");
   }
   break;
  }

  break;
 case WM_CLOSE:
  DestroyWindow(hwnd);
  break;
 }
 return 0 ;
}


FormatMessage函数:
FORMAT_MESSAGE_FROM_SYSTEM:希望获得一个系统定义的错误代码对应的字符串。
FORMAT_MESSAGE_ALLOCATE_BUFFER:要求函数分配一块足以容纳错误文本描述的内容。此块内存的句柄将返回到第5个参数中。
FORMAT_NEUTRAL|SUBLANG_NEUTRAL:操作系统的默认语言



路过

鸡蛋
6

鲜花

握手

雷人

刚表态过的朋友 (6 人)

发表评论 评论 (2 个评论)

回复 ~风介~ 2016-4-6 13:08
表示在论坛自带的空间里写日志感觉很难受~
回复 康小泡 2016-4-7 10:04
~风介~: 表示在论坛自带的空间里写日志感觉很难受~
恩啊,很多格式都没有。

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 06:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部