【框架-MFC】MFC 显示和隐藏 星号密码 以及如何预防被查看
2016-05-11 14:33
501 查看
源码下载地址 http://pan.baidu.com/s/1hrIguaS
使用平台 Microsoft visual studio 2010及以上
VCShowPass.rc
resource.h
main.h
main.cpp
KEY.ICO
预防查看
使用平台 Microsoft visual studio 2010及以上
VCShowPass.rc
// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // 中文(简体,中国) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED #pragma code_page(936) #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_DIALOG1 DIALOGEX 400, 300, 161, 94 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION EXSTYLE WS_EX_OVERLAPPEDWINDOW CAPTION "显示密码" FONT 9, "宋体", 0, 0, 0x1 BEGIN DEFPUSHBUTTON "显示密码",IDSHOWPASS,51,9,56,19,0,WS_EX_STATICEDGE PUSHBUTTON "退 出",IDEXIT,51,37,56,18,0,WS_EX_STATICEDGE CTEXT "雨绿凡尘 http://blog.csdn.net/chenlu5201314",IDC_STATIC1,10,70,146,20 ICON IDI_ICON1,IDC_STATIC,6,11,21,21 END ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_ICON1 ICON "Res\\KEY.ICO" ///////////////////////////////////////////////////////////////////////////// // // MIDI // IDR_MIDI1 MIDI "Res\\on.mid" ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080404b0" BEGIN VALUE "Comments", "http://blog.csdn.net/chenlu5201314" VALUE "CompanyName", "雨绿凡尘" VALUE "FileDescription", "在 2000/XP 里显示*的工具" VALUE "FileVersion", "1, 0, 0, 1" VALUE "ProductName", "ShowPass" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x804, 1200 END END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN IDD_DIALOG1, DIALOG BEGIN RIGHTMARGIN, 156 BOTTOMMARGIN, 90 END END #endif // APSTUDIO_INVOKED #endif // 中文(简体,中国) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED
resource.h
//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by VCShowPass.rc // #define IDD_DIALOG1 101 #define IDI_ICON1 104 #define IDR_MIDI1 107 #define IDC_STATIC1 1000 #define IDSHOWPASS 1001 #define IDEXIT 1002 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 108 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1003 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
main.h
/**************************************************************************\ * * 版权 (c) 2000 - 2100 雨绿凡尘。 保留所有权利。 * * 模块名称: * * main.h * * 摘 要: * 包含头文件、定义常用宏、声明函数 \**************************************************************************/ #ifndef __WINMAIN_H__ #define __WINMAIN_H__ //--------------------------------------------------------------------------- // 包含 窗口ID,按钮ID,图标ID //--------------------------------------------------------------------------- #include "resource.h" //--------------------------------------------------------------------------- // 包含 _T //--------------------------------------------------------------------------- #include <atlstr.h> //--------------------------------------------------------------------------- //将密码替换成需要的字符 1~128 //--------------------------------------------------------------------------- #define SHOWCHAR_0 0 //显示密码 //--------------------------------------------------------------------------- //将密码替换成需要的字符 1~128 //注: 129~256 为ASCII扩展码,ASCII码并没有规定编号为128~255的字符, // 为了能表示更多字符,各厂商制定了很多种ASCII码的扩展规范。 // 所以129~256不同的机器或不同的编辑框显示的字符都有可能不同 //--------------------------------------------------------------------------- #define SHOWCHAR_1 1 //显示密码为 ┌ #define SHOWCHAR_2 2 //显示密码为 ┐ #define SHOWCHAR_3 3 //显示密码为 └ #define SHOWCHAR_4 4 //显示密码为 ┘ #define SHOWCHAR_5 5 //显示密码为 │ #define SHOWCHAR_6 6 //显示密码为 - #define SHOWCHAR_7 7 //显示密码为 · #define SHOWCHAR_8 8 //显示密码为 ◘ #define SHOWCHAR_9 9 //显示密码为 \t #define SHOWCHAR_10 10 //显示密码为 \n #define SHOWCHAR_11 11 //显示密码为 ♂ #define SHOWCHAR_12 12 //显示密码为 ♀ #define SHOWCHAR_13 13 //显示密码为 \r #define SHOWCHAR_14 14 //显示密码为 ♬ #define SHOWCHAR_15 15 //显示密码为 ☼ #define SHOWCHAR_16 16 //显示密码为 + #define SHOWCHAR_17 17 //显示密码为 ◀ #define SHOWCHAR_18 18 //显示密码为 ↕ #define SHOWCHAR_19 19 //显示密码为 #define SHOWCHAR_20 20 //显示密码为 ¶ #define SHOWCHAR_21 21 //显示密码为 ┴ #define SHOWCHAR_22 22 //显示密码为 ┬ #define SHOWCHAR_23 23 //显示密码为 ┤ #define SHOWCHAR_24 24 //显示密码为 ↑ #define SHOWCHAR_25 25 //显示密码为 ├ #define SHOWCHAR_26 26 //显示密码为 → #define SHOWCHAR_27 27 //显示密码为 ← #define SHOWCHAR_28 28 //显示密码为 向右游标 #define SHOWCHAR_29 29 //显示密码为 向左游标 #define SHOWCHAR_30 30 //显示密码为 向上游标 #define SHOWCHAR_31 31 //显示密码为 向下游标 #define SHOWCHAR_32 32 //显示密码为 #define SHOWCHAR_33 33 //显示密码为 ! #define SHOWCHAR_34 34 //显示密码为 " #define SHOWCHAR_35 35 //显示密码为 # #define SHOWCHAR_36 36 //显示密码为 $ #define SHOWCHAR_37 37 //显示密码为 % #define SHOWCHAR_38 38 //显示密码为 & #define SHOWCHAR_39 39 //显示密码为 ' #define SHOWCHAR_40 40 //显示密码为 ( #define SHOWCHAR_41 41 //显示密码为 ) #define SHOWCHAR_42 42 //显示密码为 * #define SHOWCHAR_43 43 //显示密码为 + #define SHOWCHAR_44 44 //显示密码为 , #define SHOWCHAR_45 45 //显示密码为 - #define SHOWCHAR_46 46 //显示密码为 . #define SHOWCHAR_47 47 //显示密码为 / #define SHOWCHAR_48 48 //显示密码为 0 #define SHOWCHAR_49 49 //显示密码为 1 #define SHOWCHAR_50 50 //显示密码为 2 #define SHOWCHAR_51 51 //显示密码为 3 #define SHOWCHAR_52 52 //显示密码为 4 #define SHOWCHAR_53 53 //显示密码为 5 #define SHOWCHAR_54 54 //显示密码为 6 #define SHOWCHAR_55 55 //显示密码为 7 #define SHOWCHAR_56 56 //显示密码为 8 #define SHOWCHAR_57 57 //显示密码为 9 #define SHOWCHAR_58 58 //显示密码为 : #define SHOWCHAR_59 59 //显示密码为 ; #define SHOWCHAR_60 60 //显示密码为 < #define SHOWCHAR_61 61 //显示密码为 = #define SHOWCHAR_62 62 //显示密码为 > #define SHOWCHAR_63 63 //显示密码为 ? #define SHOWCHAR_64 64 //显示密码为 @ #define SHOWCHAR_65 65 //显示密码为 A #define SHOWCHAR_66 66 //显示密码为 B #define SHOWCHAR_67 67 //显示密码为 C #define SHOWCHAR_68 68 //显示密码为 D #define SHOWCHAR_69 69 //显示密码为 E #define SHOWCHAR_70 70 //显示密码为 F #define SHOWCHAR_71 71 //显示密码为 G #define SHOWCHAR_72 72 //显示密码为 H #define SHOWCHAR_73 73 //显示密码为 I #define SHOWCHAR_74 74 //显示密码为 J #define SHOWCHAR_75 75 //显示密码为 K #define SHOWCHAR_76 76 //显示密码为 L #define SHOWCHAR_77 77 //显示密码为 M #define SHOWCHAR_78 78 //显示密码为 N #define SHOWCHAR_79 79 //显示密码为 O #define SHOWCHAR_80 80 //显示密码为 P #define SHOWCHAR_81 81 //显示密码为 Q #define SHOWCHAR_82 82 //显示密码为 R #define SHOWCHAR_83 83 //显示密码为 S #define SHOWCHAR_84 84 //显示密码为 T #define SHOWCHAR_85 85 //显示密码为 U #define SHOWCHAR_86 86 //显示密码为 V #define SHOWCHAR_87 87 //显示密码为 W #define SHOWCHAR_88 88 //显示密码为 X #define SHOWCHAR_89 89 //显示密码为 Y #define SHOWCHAR_90 90 //显示密码为 Z #define SHOWCHAR_91 91 //显示密码为 [ #define SHOWCHAR_92 92 //显示密码为 \ #define SHOWCHAR_93 93 //显示密码为 ] #define SHOWCHAR_94 94 //显示密码为 ^ #define SHOWCHAR_95 95 //显示密码为 _ #define SHOWCHAR_96 96 //显示密码为 ` #define SHOWCHAR_97 97 //显示密码为 a #define SHOWCHAR_98 98 //显示密码为 b #define SHOWCHAR_99 99 //显示密码为 c #define SHOWCHAR_100 100 //显示密码为 d #define SHOWCHAR_101 101 //显示密码为 e #define SHOWCHAR_102 102 //显示密码为 f #define SHOWCHAR_103 103 //显示密码为 g #define SHOWCHAR_104 104 //显示密码为 h #define SHOWCHAR_105 105 //显示密码为 i #define SHOWCHAR_106 106 //显示密码为 j #define SHOWCHAR_107 107 //显示密码为 k #define SHOWCHAR_108 108 //显示密码为 l #define SHOWCHAR_109 109 //显示密码为 m #define SHOWCHAR_110 110 //显示密码为 n #define SHOWCHAR_111 111 //显示密码为 o #define SHOWCHAR_112 112 //显示密码为 p #define SHOWCHAR_113 113 //显示密码为 q #define SHOWCHAR_114 114 //显示密码为 r #define SHOWCHAR_115 115 //显示密码为 s #define SHOWCHAR_116 116 //显示密码为 t #define SHOWCHAR_117 117 //显示密码为 u #define SHOWCHAR_118 118 //显示密码为 v #define SHOWCHAR_119 119 //显示密码为 w #define SHOWCHAR_120 120 //显示密码为 x #define SHOWCHAR_121 121 //显示密码为 y #define SHOWCHAR_122 122 //显示密码为 z #define SHOWCHAR_123 123 //显示密码为 { #define SHOWCHAR_124 124 //显示密码为 | #define SHOWCHAR_125 125 //显示密码为 } #define SHOWCHAR_126 126 //显示密码为 ~ #define SHOWCHAR_127 127 //显示密码为 删除 #define SHOWCHAR_128 128 //显示密码为 € //--------------------------------------------------------------------------- // 主窗口的消息处理 //--------------------------------------------------------------------------- extern LRESULT CALLBACK DialogFunc(HWND,UINT,WPARAM,LPARAM); //--------------------------------------------------------------------------- // 枚举所有窗口 //--------------------------------------------------------------------------- extern BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam); //--------------------------------------------------------------------------- // 显示和隐藏密码的处理函数 //--------------------------------------------------------------------------- extern void ShowAll(HWND hwnd, int i); #endif
main.cpp
/**************************************************************************\ * * 版权 (c) 2000 - 2100 雨绿凡尘。 保留所有权利。 * * 模块名称: * * main.cpp * * 摘 要: * 实现函数 \**************************************************************************/ #include "main.h" //--------------------------------------------------------------------------- // 记录显示和隐藏密码的状态 //--------------------------------------------------------------------------- static bool g_bShowPassWord = false; //--------------------------------------------------------------------------- // 程序入口函数 //--------------------------------------------------------------------------- int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { DialogBox (hInstance, (LPCSTR)IDD_DIALOG1, NULL, (DLGPROC)DialogFunc) ; return TRUE ; } //--------------------------------------------------------------------------- // 主窗口的消息处理 //--------------------------------------------------------------------------- LRESULT CALLBACK DialogFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { RECT rc; switch(message) { case WM_INITDIALOG: GetWindowRect(hwnd, &rc); ShowWindow(hwnd, SW_SHOW); case WM_SHOWWINDOW: return TRUE; case WM_TIMER: return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDSHOWPASS: if (!g_bShowPassWord) { SetWindowText(hwnd,_T("隐藏密码")); SetWindowText(GetDlgItem(hwnd,IDSHOWPASS),_T("隐藏密码")); } else { SetWindowText(hwnd,_T("隐藏密码")); SetWindowText(GetDlgItem(hwnd,IDSHOWPASS),_T("显示密码")); } ShowAll(hwnd, 1); return (FALSE); case IDEXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); return (TRUE); } break; case WM_CLOSE: case WM_DESTROY: GetWindowRect(hwnd, &rc); PostQuitMessage(0); return FALSE; } return (FALSE); } //--------------------------------------------------------------------------- // 显示和隐藏密码的处理函数 //--------------------------------------------------------------------------- void ShowAll(HWND hwnd, int i) { g_bShowPassWord = !g_bShowPassWord; HWND Window_Handle; Window_Handle = GetWindow(hwnd, GW_HWNDFIRST); while (Window_Handle != 0) { if (Window_Handle != 0) EnumChildWindows(Window_Handle, &EnumChildWindowsProc, i); Window_Handle = GetWindow(Window_Handle, GW_HWNDNEXT); } } //--------------------------------------------------------------------------- // 枚举所有窗口 //--------------------------------------------------------------------------- BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam) { char buffer[255]; GetClassName(hwnd, buffer, 256); if (GetWindowLong(hwnd, GWL_STYLE | ES_PASSWORD)) { if (g_bShowPassWord) { PostMessage(hwnd, EM_SETPASSWORDCHAR,SHOWCHAR_0, 0); } else { PostMessage(hwnd, EM_SETPASSWORDCHAR,SHOWCHAR_42, 0); } } InvalidateRgn(hwnd, 0, TRUE); return TRUE; //终止循环 }
KEY.ICO
预防查看
BOOL CxxxDialog::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message == EM_SETPASSWORDCHAR) { //一定要返回TRUE 否则无法预防 return TRUE; } return CDialog::PreTranslateMessage(pMsg); }
相关文章推荐
- leetcode_c++:4sum(016)
- 三十四 操作文件和目录
- CDN 和 DNS
- PHP获取网卡的MAC地址原码,支持WIN/LINUX系统
- android简单的AIDL使用示例
- iOS 自定义视频播放器
- PHP Date()函数详细参数
- unity 按下鼠标左键随机生成物体Instantiate
- ajax中post和get
- PL/SQL developer 导出CSV文件
- java 重定向和转发的区别
- uCrop源码思路分析--难点攻破
- c++开发ocx入门实践一
- mac 下 常用命令
- Windows下NexusPHP搭建PT站过程
- js/jquery 实时监听输入框值变化的完美方案:oninput & onpropertychange
- 数据结构---队列C语言实现
- 数据结构---队列C语言实现
- 数据结构---队列C语言实现
- SQLite