BOOL CCrackWindowDlg::OnInitDialog() ... { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 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); // 设置小图标 // TODO: 在此添加额外的初始化代码 CString str; DWORD SeriaNumber = NULL; char temp[MAX_PATH];//暂存字符串 long SeriaNum; ::GetVolumeInformation("c:/",NULL,NULL,&SeriaNumber,NULL,NULL,NULL,NULL); //格式化为字符串 sprintf(temp,"%x",SeriaNumber); for(int i = 0; i < strlen(temp); i++) ...{ if(temp[i] >= 'a' && temp[i] <= 'f') ...{ temp[i] = temp[i] - 32;//转化为大写 } } SeriaNum = StrToNum16(temp);//十六进制字符串转化为十进制数字 //以十进制形式计算 SeriaNum = SeriaNum * 12345 + 188968999;//取硬盘序列号*0x3039 + 0xB437027 //再次格式化为字符串 sprintf(temp,"%x",SeriaNum); for(int _i = 0; _i < strlen(temp); _i++ ) ...{ if(temp[_i] >= 'a' && temp[_i] <= 'f') ...{ temp[_i] = temp[_i] - 32; } } str = temp; SeriaNum = StrToNum16(str);//十六进制字符串转化为十进制数字 //讲数字格式化为无符号字符串 str.Format("%u",SeriaNum); //个人习惯问题 Seria.SetWindowText(str.Left(str.GetLength())); m_btnOK.SetInactiveBgColor(RGB(0,0,0));//默认 return TRUE; // 除非设置了控件的焦点,否则返回 TRUE}