Hoodlum1980 (fafa)'s Technological Blog

Languages mainly using and digging: C / CPP, ASM, C#, Python. Other languages:Java.

博客园 首页 新随笔 联系 订阅 管理

    【原创性声明】基本上是我平时编码时,通过MSDN,网络搜索等记录的一些技术性笔记。这些内容本质上没有我的原创性和创新性内容,但是因为很杂所以本身并不容易都能一一记住。在这里列出这些条目,已C++为主,没有什么中心思想,仅为备忘和查询使用。

    (1)检测合法输入的标准化写法(char*):

    char text[]; //待检测文本

    if( strlen ( text ) != desiredLength || strspn ( text, "1234567890") < desiredLength )

      return FALSE;

    其中,desiredLength 是输入内容的预期长度,"1234567890” 是合法字符集合。

    (2)strncpy ( char *dest, const char *source, size_t count ) 的特征:

    * 当 count <= strlen ( source ) 时不会在后面自动添加 null-terminator,仅执行拷贝字符动作。

    * 当 count > strlen ( source ) 时,会在后面补 0,直到拷贝到目标缓冲区的字符个数达到 count 为止。

    (3)alloca (size_t size) 用于在栈上分配空间(无须对应的释放函数)。

    (4)把制定进制表示的字符串转换成整数:strtol。

    (5)AdjustWindowRectEx 函数:根据客户区矩形测量出窗口矩形。

    提供一个客户区矩形,根据窗口样式和扩展样式,是否有菜单等信息,返回能容纳该客户区矩形的窗口矩形,此窗口矩形然后可以传递给 CreateWindowEx 函数。

    (6)如果在构造(析构)函数中调用虚函数,则调用的是自身类型定义的函数。(这句话表义不太精确,忘记我当初记的是什么含义)

    (7)MFC 获取时间跨度。

    CTime time1 ( 2008, 8, 8, 0, 0, 0 );

    CTime time2 = CTime :: GetCurrentTime ();

    CTimeSpan timespan = time2 - time1;

    CString strText;

    strText.Format ( _T ( " %d days %d hours " ), timespan.GetDays(), timespan.GetHours ( ) );

    (8)在对话框上添加蚀刻线:

    添加 Image 控件,把 Color 属性改为 Etched。

    调整ComboBox 下拉框高度: 选中 ComboBox, 点击下拉按钮,向下拉尺寸框。注意,如果是用 CreateWindow 函数创建的下拉框,指定的高度不应该是文本框高度,而是包含了文本框 + 下拉列表框的总高度。

    (9)FlashWindow / FlashWindowEx: 闪烁窗口和任务栏按钮。

    (10)MessageBeep ( MB_ICONEXCLAMATION ) :发出系统定义的警告声。

    (11)在用户界面上绘制标准控件(例如按钮,右下角的拖动三角形图案):DrawControlFrame。

    绘制三维外观的矩形边缘:DrawEdge;

    绘制焦点矩形:DrawFocusRect。

    (12)在 for 循环中如果用 break 结束循环,不会执行第三个分句。例如:

    for ( i = 0; i < 1000 ; i ++ ) break;

    printf ( " i = %d \n" , i ); //输出 i = 0;

    (13)struct 是一种成员函数默认为 public 的 class。

    (14)HRESULT CoFileTimeNow ( FILETIME * lpft ) : 当前时间作为 FILETIME 结构返回。

    (15)IActiveDesktop :: SetWallpaper : 设置桌面壁纸。

    (16)控制服务状态:ControlService。

    (17)_beginthread, _endthread 是 C 运行时库函数;

      CreateThread 是 WIN32 API。默认一个线程的栈为 1 MB。

      ExitThread 可以提供一个线程退出码,用 GetExitCodeThread 获取这个码。

    (18)EnumDesktops:枚举当前进程所在工作站的桌面。

    (19)SetProcessWindowStation:设置进程的窗口工作站。

    WindowStation 工作站包括以下资源:所有桌面,剪贴板,原子量(这是什么?)

    (20)SID:security identifier ,可变长度的一个结构体,用于唯一标识用户或组。

    Access Control: 权限控制 (winme,95,98不支持)。

    Securable Object:可以拥有一个安全描述符的对象。

    Security descriptor: 安全描述符,和一个 securable object 关联。

    Security descriptors:包括

      SIDs (主人,组),

      DACL:针对特定用户、组的权限(允许/拒绝)

      SACL:(这是什么?)

      一组控制位:指出其自身或成员含义。

    securable objects:包括所有命名的windows对象。一些未命名对象(例如进程,线程)。对于大多数对象,可以在创建他们的API中指定安全描述符,例如:文件,目录,命名/匿名管道,进程,线程,文件映射,access tokens,系统管理对象(工作站,桌面),注册表键,系统服务,网络共享,进程同步对象(events,mutexes,sepaphors,调度(job objects),目录服务对象。

    Access Token:包含一个登陆会话的权限信息。

    

    (21)获取系统信息(CPU个数,CPU类型):GetSystemInfo。

    (22)播放wav文件:PlaySound ( _T("....wav"), NULL, SND_FILETIME | SND_ASYNC );

    (23)创建快捷方式:SHCreateShortcutEx。

      IShellLink 接口:创建,修改,解析快捷方式。

    (24)获取特定文件夹路径:SHGetFolderPathAndSubDir。

    (25)MFC中测量字符串:CDC::GetOutputTextExtent。

    (26)重绘菜单:DrawMenuBar ( HWND )。

    (27)获取对话框字体大小:GetDialogBaseUnits。

    (28)让 ComboBox 实现自动完成(类似IE地址栏):SHAutoComplete (注意需要先调用COM初始化函数)
       HWND hComboBox = GetDlgItem(hDlg, IDC_COMBO_TEST);
       HWND hEdit = FindWindowEx(hComboBox, NULL, _T("Edit"), NULL);
       SHAutoComplete(hEdit, SHACF_DEFAULT | SHACF_FILESYSTEM) ;

    (29)关闭窗口时动画效果(例如渐隐):AnimateWindow。

    (30)比 CreateProcess 更简便的两个函数:WinExec, ShellExec。

    (31)添加,修改,删除托盘(Tray)图标:Shell_NotifyIcon。

    

    (未完待续)

    

posted on 2011-02-15 10:35  hoodlum1980  阅读(686)  评论(0编辑  收藏  举报