您的位置:首页 > 编程语言

VC经典代码(二)

2015-10-13 20:35 267 查看
138 这里有很多CRichEditCtrl控件的高级用法:http://www.codeguru.com/Cpp/controls/richedit/

139 CGridCtrl控件的一些应用:http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=327

140 一个不错的地方:http://www.vckbase.com/document/listdoc.asp?mclsid=3&sclsid=323

141 怎样使右键菜单也能变灰、打勾:http://community.csdn.net/Expert/topic/4501/4501123.xml?temp=.4074823

142 MD5加密解密的API:http://community.csdn.net/Expert/topic/4502/4502325.xml?temp=.6894647

 MD5Init

 MD5Final

 MD5Update

143 用CBrush::CreateStockObject(HOLLOW_BRUSH);或CBrush::CreateStockObject(NULL_BRUSH);这两个可以创建镂空的画刷。

144 创建不规则窗体:http://www.vckbase.com/document/viewdoc/?id=1345

145 拖动一个没有标题栏的窗体:http://community.csdn.net/Expert/topic/4499/4499796.xml?temp=6.763858E-02

146 屏蔽浏览器中的弹出广告,下面地址中是在ATL中采用BHO服务的方法:http://www.codeproject.com/atl/popupblocker2.asp

 CSDN上有个讨论贴:http://community.csdn.net/Expert/topic/4496/4496918.xml?temp=.157284

147 远程线程注入:

 http://www.codeproject.com/threads/RmThread.asp

 http://www.codeproject.com/library/InjLib.asp

 http://www.codeproject.com/win32/Remote.asp

148 CEditView中两个函数的用法:

 GetEditCtrl().ModifyStyle (0  , WS_VSCROLL |ES_AUTOHSCROLL   |ES_AUTOVSCROLL  |WS_HSCROLL |ES_WANTRETURN | ES_MULTILINE);

 GetEditCtrl().GetSel(m_nStartChar, m_nEndChar ) ;

149 给对话框窗体底部加上状态条,把下面代码加进对话框的OnInitDialog()函数中:

-----------------------------------------------------------
static UINT indicators[] =
{
ID_SEPARATOR,           // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
//下面m_wndStatusBar必须先在对话框类中声明:CStatusBar m_wndStatusBar;
if (!m_wndStatusBar.Create(this,WS_CHILD|WS_VISIBLE|WS_BORDER)||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
AfxMessageBox("Status Bar not created!", NULL, MB_OK );

}
CRect rect;
this->GetWindowRect(&rect);
m_wndStatusBar.MoveWindow(2,rect.bottom-GetSystemMetrics(SM_CYSIZE)-27,rect.Width()-4,20);
m_wndStatusBar.ShowWindow(SW_SHOW);
m_wndStatusBar.SetWindowText("Ready");
-----------------------------------------------------------
 把上面代码加在OnInitDialog里,注意:m_wndStatusBar变量的声明语句CStatusBar m_wndStatusBar;要放在你的对话框类C****Dlg中才行。

150 从注册表中读取cpu的频率:

 读取 ~MHz 这个键值 ,记住那键前有个~别忘了,在注册表的HKEY_LOCAL_MACHINE\\Hardware\\Description\\System\\CentralProcessor\\0  //0 为第一个cpu

            Hardware\\Description\\System\\CentralProcessor\\1  //1 为第二个cpu

  得到cpu的数量,摘自:http://community.csdn.net/Expert/topic/4635/4635246.xml?temp=.7182123
-----------------------------------------------------------------------
SYSTEM_INFO siSysInfo;
GetSystemInfo(&siSysInfo);
printf("  Number of processors: %u\n", siSysInfo.dwNumberOfProcessors);
-----------------------------------------------------------------------
151 改变CStatic控件的前景、背景色:http://community.csdn.net/Expert/topic/4507/4507710.xml?temp=.1524164

 处理WM_CTLCOLOR消息:
---------------------------------------------------------------------
HBRUSH CQQDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr;

// TODO: Change any attributes of the DC here
if(CTLCOLOR_STATIC == nCtlColor)
//if(CTLCOLOR_STATIC == nCtlColor && pWnd->GetDlgCtrlID()==IDC_TOOL)  //改成这样就只对IDC_TOOL这一个静态文本控件起作用了
{
pDC->SetBkColor(RGB(255,255,255));         //背景色为白
pDC->SetTextColor(RGB(0,0,0));             //前景色为黑
hbr = CreateSolidBrush(RGB(255,255,255));  //其它区域也为白
//上面三行代码改成下面这三行就创建空心刷子,就可以实现在背景上写字的效果了
//pDC->SetBkMode(TRANSPARENT);
//pDC->SetTextColor(RGB(0,0,0));
//hbr = CreateStockObject(NULL_BRUSH);
}
else
hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Return a different brush if the default is not desired
return hbr;
}
----------------------------------------------------------------------
 再加一个判断if (pWnd->GetDlgCtrlID()==IDC_....)就可以指定是改变哪个的颜色了,其它控件的颜色的改变方法和这个大同小异。

152 怎样获得字体得宽度,高度,间距等信息:GetTextMetrics

153 为了让你对i++有个更清楚的认识,先看如下代码:

 -------------------

 int i=2;

 i=(i++) % 3;

 printf("i=%d",i);              //这里输出i=?呢

 -------------------

 下面是前两行代码的汇编代码:

 ------------------------------------------------------------------------------------------------------------------

 00401778   mov         dword ptr [ebp-4],2        把值2写入内存中[ebp-4]指向的位置(后面称变量i)  //相当于i=2

 0040177F   mov         eax,dword ptr [ebp-4]      把i的当前值2赋于eax中                          //把eax当成了i的临时变量了

 00401782   cdq

 00401783   mov         ecx,3                      把3赋于ecx中                                   //同样ecx也成了临时变量了

 00401788   idiv        eax,ecx                    eax % ecx(2%3),结果放入edx中(等于2)

 0040178A   mov         dword ptr [ebp-4],edx      把edx中的值2写入变量i                          //相当于计算i=2
% 3      

 0040178D   mov         edx,dword ptr [ebp-4]  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ vc