摘要:
AfxExtractSubString函数的用法在我做加密软件时,需要给加密后的文件加个后缀(比如.zq),然后解密时又需要去掉后缀,还原本来的后缀,并在文件名后加“解密”二字,我采取的就是这个比较不常用的MFC分割字符串的函数AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,int iSubString, TCHAR chSep = '\n'),下面大概说一下它的用法:注:本文系rainy8758原创,转载请注明出处:http://blog.hjenglish.com/rainy8758/arti 阅读全文
摘要:
1.MFC窗口的句柄和指针的转换(1) 一般窗口对象都会有一个其对应的句柄变量,所以我们可以取此对象的m_hWnd属性来得到句柄。(2)使用GetSafeHwnd函数取得程序所在窗口类的句柄(3)使用FromHandle函数来通过句柄得到其想要的指针 其他的一些方法: GetActiveWindow 取当前活动窗口句柄 AfxGetMainWnd 取主窗口句柄 GetForegroundWindow 取前台窗口句柄 FindWindow寻找参数指定的窗口 EnumWindow枚举窗口2. 上下文无关设备的句柄和指针的转换 (1)this->m_hDC (2)CDC::GetSafeHdc 阅读全文
摘要:
以下代码主要来源于CodeProject上一个用渐变色填充DC的static控件中的一部分代码。//这是要使用的函数原型:typedef UINT (CALLBACK* LPGNDLLFUNC)(HDC,CONST PTRIVERTEX,DWORD,CONST PVOID,DWORD,DWORD);HINSTANCEhinst_msimg32 = NULL;static LPGNDLLFUNCpdllfunc_GradientFill;//初始化:hinst_msimg32 = LoadLibrary( "msimg32.dll" );if( hinst_msimg32 ) 阅读全文
摘要:
模态和非模态两者的区别: 一. 非模态对话框的模板必须具有Visible风格(Visible=True),否则对话框将不可见,而模态对话框则无需设置该项风格。在实际编程中更加保险的办法是调用CWnd::ShowWindow(SW_SHOW)来显示对话框,而不管对话框是否具有Visible风格。 二. 非模态对话框对象是用new操作符来动态创建的,而不是以成员变量的形式嵌入到别的对象中或以局部变量的形式构建的。通常应在对话框的拥有者窗口类内声明一个指向对话框类的指针成员变量,通过该指针可访问对话框对象。 三. 通过调用CDialog::Create函数来启动对话框,而不是CDialog::DoM 阅读全文
摘要:
遍历窗体所有控件代码如下:CWnd* pwndChild = GetWindow(GW_CHILD); while (pwndChild){ //....to do something pwndChild = pwndChild->GetNextWindow();}如果只想得到某一类 ,比如button的。代码如下:// 遍历得到页面中的所有Button控件,依次设定其样式和颜色 CWnd* pWnd = GetWindow(GW_CHILD); char cClassName[255]={0}; while(pWnd) { //得到控件的... 阅读全文
摘要:
用鼠标单击窗口标题条以外区域移动窗口移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口, 就需要用鼠标单击窗口标题条以外区域来移动窗口。有两种方法可以达到这一目标。 方法一:当窗口确定鼠标位置时,Windows向窗口发送WM_NCHITTEST消息,可以处 理该消息,使得只要鼠标在窗口内,Windows便认为鼠标在标题条上。这需要重载 CWnd类处理WM_NCHITTEST消息的OnNcHitTest函数,在函数中调用父类的该函数, 如果返回HTCLIENT,说明鼠标在窗口客户区内,使重载函数返回HTCAPTION, 使Windows误认为鼠标处于标题条上。 下例是使用.. 阅读全文
摘要:
有没有想过在Windows环境下实现苹果电脑窗口界面的风格?下面就以实现苹果电脑窗口风格为例,进行一次奇妙的旅行。原 理仔细观察苹果窗口,发现和Windows窗口的区别主要体现在标题栏和控制按钮(即最小化、恢复、关闭按钮)。所以我们应该把主要精力集中在这两点上,直接对Windows窗口已有的标题栏和控制按钮进行修改。由于标题栏和控制按钮都属于非客户区,所以关键是获得非客户区的CDC,可以通过GetWindowDC()来获得。GetWindowDC()可以获得整个窗口的CDC,当然也包括非客户区的CDC,得到此CDC后,确定标题条的确切位置,就可以在标题栏上为所欲为了。如图1所示,在标题栏的位置 阅读全文
摘要:
很多同学在绘制UI时喜欢将窗口或者对话框设置成无边框无标题栏样式,然后在客户区里就可以”胡作非为“了,想干什么都行然而新手们包括笔者以前都遇到的一个问题是:对于对话框来说直接这样设置:ModifyStyle(WS_CAPTION | WS_THICKFRAME, 0, SWP_FRAMECHANGED); 是不完美的,他们会发现在对话框的情况下,那个border还是存在,最后怎么设置都不可行DWORD dwStyle = GetStyle();//获取旧样式 DWORD dwNewStyle = WS_OVERLAPPED | WS_VISIBLE| WS_SYSMENU |WS_MINI.. 阅读全文
摘要:
1. CListCtrl 样式及设置2. 扩展样式设置3. 数据插入4. 一直选中Item5. 选中和取消选中Item6. 得到CListCtrl中所有行的checkbox的状态7. 得到CListCtrl中所有选中行的序号8. 得到item的信息9. 得到CListCtrl的所有列的header字符串内容10. 使CListCtrl中一项可见,即滚动滚动条11. 得到CListCtrl列数12. 删除所有列13. 得到单击的CListCtrl的行列号14. 判断是否点击在CListCtrl的checkbox上15. 右键点击CListCtrl的item弹出菜单16. CListCtrl进行大 阅读全文
摘要:
structtagTime{intyear;intmonth;intday;};voidSet(inty,intm,intd,structtagTime*t)/*设置日期*/{t->year=y;t->month=m;t->day=d;}intIsLeapYear(intyear)/*是否闰年*/{return((year%4==0)&&(year%100!=0)||year%400==0);}intGetLastDay(structtagTimedate)/*得到date.month的最大天数*/{intnum;switch(date.month){case 阅读全文