VC Conclusion

<!-- /* Font Definitions */ @font-face {font-family:"MS 明朝"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-alt:"MS Mincho"; mso-font-charset:128; mso-generic-font-family:roman; mso-font-pitch:fixed; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Century; panose-1:2 4 6 3 5 7 5 2 3 3; mso-font-alt:"Times New Roman"; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"/@MS 明朝"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-charset:128; mso-generic-font-family:roman; mso-font-pitch:fixed; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} @font-face {font-family:"/@SimSun"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0mm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:Century; mso-fareast-font-family:"MS 明朝"; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:99.25pt 30.0mm 30.0mm 30.0mm; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:18.0pt;} div.Section1 {page:Section1;} -->

1. 使用 ModifyStyleEx 了控件 格无效
答:修改之后,重 一次,如果 不行的 ,再 试试 SetWindowPos(0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME);

2.
动态设 编辑 框的 ES_PASSWORD 无效
答:修改之后,需要 用一次 SetPasswordChar('*');

3.
如何 取任 务栏 图标
答: 有网友提出,能不能在程序界面上 示当前的托 盘图标 这样 更直 一些。 一点我也曾想到 ,也知道奥秘就在 TBBUTTON 构体的 dwData 域里 面,可惜 个域的 构在 MSDN 中没有描述。我也曾 TB_GETIMAGELIST 消息 image list 的句柄,然后用 CImageList::FromHandle CImageList 中,但却都失 了。
csdn 网友的帮助下,我弄清了 dwData 构,其 dwData 有一个 这样 的机构,我 命名 TRAYDATA:
struct TRAYDATA 

  HWND hwnd;  
  UINT uID;  
  UINT uCallbackMessage;  
  DWORD Reserved[2];  
  HICON hIcon; //
盘图标 的句柄  
};  
取到 hIcon, 简单
//
分配虚 内存  
lngAddress = VirtualAllocEx(hProcess, NULL, sizeof(TBBUTTON), MEM_COMMIT, PAGE_READWRITE);  
//
hProcess 程内,地址 lngAddress 中的内容 ( 大小 sizeof(TBBUTTON)) 取到 tb  
ret = ::ReadProcessMemory(hProcess, LPVOID(long(lngAddress)), &tb, sizeof(TBBUTTON), 0); 
//
hProcess 程内,地址 tb.dwData 中的内容 ( 大小 sizeof(TRAYDATA)) 取到 tray  
ret = ::ReadProcessMemory(hProcess, LPVOID(tb.dwData), &tray, sizeof(TRAYDATA), 0); 
然后就可以用 tray.hIcon 索引到 图标 柄了
//
放内存代

4.BeginWaitCursor
EndWaitCursor 无效
答: SetCapture();BeginWaitCursor();....EndWaitCursor();ReleaseCapture();

5.
打印源 中文件名和行号常用的宏名是什  
答:文件名: __FILE__ 行号: __LINE__ 

6.
如何具体判断一个字符串中哪个是英文字母
答:函数 isalpha

7.
在注册表中如何得到所有安装了的 用程序程序的信息
答: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall 下面的子鍵

8.64
位系 下运行 32 的程序,操作注册表遭遇重定向 问题
答: PVOID OldValue; 
HINSTANCE hlibrary; 
typedef int (__stdcall * Wow64DisableWow64FsRedirection)(LPVOID); 
YWow64DisableWow64FsRedirection f_Wow64DisableWow64FsRedirection = NULL; 
typedef int (__stdcall * Wow64RevertWow64FsRedirection)(LPVOID); 
Wow64RevertWow64FsRedirection f_Wow64RevertWow64FsRedirection = NULL; 
hlibrary = LoadLibrary("Kernel32.dll"); 
f_Wow64DisableWow64FsRedirection = (Wow64DisableWow64FsRedirection) GetProcAddress(hlibrary,"Wow64DisableWow64FsRedirection"); 
if(!f_Wow64DisableWow64FsRedirection) { } 
f_Wow64DisableWow64FsRedirection (&OldValue); 
//
里写注册表操作函数 ,Open 候要指定 KEY_WOW64_64KEY  
f_Wow64RevertWow64FsRedirection = (Wow64RevertWow64FsRedirection) GetProcAddress(hlibrary,"Wow64RevertWow64FsRedirection"); 
if(!f_Wow64RevertWow64FsRedirection) { } 
f_Wow64RevertWow64FsRedirection (OldValue); 
FreeLibrary(hlibrary);

9.
使用系 认浏览 器在新窗口打
答: ShellExecute 是我 常用的一个 API ,可以运行程序,打
ShellExecute(NULL, "open", "http://www.csdn.net", NULL,NULL,SW_SHOWMAXIMIZED);
这样 可以打 一个网 ,但不是在新 IE 中打 ,改成下面方式 就可以在一个新的 IE 中打
ShellExecute(NULL, "open", "IEXPLORE", "http://www.csdn.net",NULL,SW_SHOWMAXIMIZED);  

10.
清除串口的
答: PurgeComm(hCom,PURGE_TXABORT ¦ PURGE_RXABORT ¦ PURGE_TXCLEAR ¦ PURGE_RXCLEAR);

11.
示桌面属性 对话
答: ShellExecute(GetDesktopWindow()->m_hWnd,"open","control.exe","desk.cpl Display,@Theme","",SW_SHOW );

12.
限制 Edit 只能 0-F
答: WNDPROC wpOrigEditProc; 
LRESULT CALLBACK wpSubclassEditProc(HWND hDlg,UINT uiMsg,WPARAM wParam,LPARAM lParam);
wpOrigEditProc = (WNDPROC) SetWindowLong(GetDlgItem(IDC_EDIT_DATA)->m_hWnd, 
  GWL_WNDPROC, (LONG) wpSubclassEditProc); 
LRESULT CALLBACK wpSubclassEditProc(HWND hDlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{
 switch(uiMsg)
 {
 case WM_CHAR:
  if((wParam >= 0x30 && wParam <= 0x39) || 
  (wParam >= 0x41 && wParam <= 0x46) ||
  (wParam >= 0x61 && wParam <= 0x66) ||
  (wParam == 0x08) || wParam == 0x20 || wParam == 0x0D)
  {
  return CallWindowProc(wpOrigEditProc,hDlg,uiMsg,wParam,lParam);
  }
  else
  {
  if(GetKeyState(VK_CONTROL) & 0x8000)
  {
  return CallWindowProc(wpOrigEditProc,hDlg,uiMsg,wParam,lParam);
  }
  return true;
  }
  break;
 }
 return CallWindowProc(wpOrigEditProc,hDlg,uiMsg,wParam,lParam);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值