摘要:方法一::GetCommandLine(); 将获取到 "C:\test\app.exe" -1 -2方法二for (int i=0;im_lpCmdLine; 将获取到 -1 -2其他方法 如果希望支持MFC应用程序的标准命令行,还可以使用MFC中的CCommandLineInfo类。
阅读全文
随笔分类 - MFC
摘要:WIN7下重建图标缓存 使用WIN7时,MFC工程生成的应用程序图标,如果更改为自定义的ICON图标之后可能在桌面上显示的依旧是上一次的图标,改个名或换个路径都能恢复正常,说明在WIN7系统下图标的缓存没有刷新,只需要重建下图标缓存既可。代码如下:rem 关闭Windows explorertaskkill /f /im explorer.exerem 清理系统图标缓存数据库attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db"del /f "%userprofile%\AppData\Local\Ic
阅读全文
摘要:现在有很多软件都支持拖拽功能,就是用鼠标拖着文件放到软件窗口中某个位置,软件就可以做出相应的反应。比如,Windows自带的播放软件Windows Media Player,你可以拖着一个媒体文件放到它的主窗口中,它就会开始播放这个文件。 怎么让自己的软件也有这个功能呢? 其实,并不是很难,只要让你需要有拖拽功能的控件响应WM_DROPFILES消息就行了。下面以Edit控件和ListBox控件为例子来说明。 首先,从CEdit继承,自定义一个Edit控件。在头文件添加如下的消息响应函数:MyEdit.h#pragma once// CMyEditclass CMyEdit : public
阅读全文
摘要:在OnInitDialog中添加: CRect rcDlgs; GetWindowRect(rcDlgs); //得到对话框的Rect 对话框的大小 ScreenToClient(rcDlgs); //把屏幕的值转成相应的实际的值 int cx = GetSystemMetrics(SM_CXSCREEN); //获得屏幕的分辨率 int cy = GetSystemMetrics(SM_CYSCREEN); SetWindowPos(&wndTopMost,//窗口位置 cx/2-rcDlgs.Width()/2, c...
阅读全文
摘要:16. item切换焦点时(包括用键盘和鼠标切换item时),状态的一些变化顺序 添加listctrl控件的LVN_ITEMCHANGED消息相应函数 void CTest6Dlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // TODO: Add your control notification handler code here CString...
阅读全文
摘要:[设置属性]首先用资源编辑器拖放一个ListCtrl控件到对话框中。设置属性。Always Show Selection: True // 即便失去焦点依然高亮选择SingleSelection: True // 只允许选中一行View: Report // 报表方式,较常用[初始化]// 1. 在对话框的OnInitialDialog中初始化ListCtrl// 1. 设置样式m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT );// LVS_EX_FULLROWSELECT: 表示选中整行,而非某一列// LVS_...
阅读全文
摘要:其实,有无标题栏无所谓,本文要实现的是点击客户区实现拖动.目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的, 那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。程序编译运行后的界面效果如图一所示:图一、无标题栏的对话框界面一、实现方法解决无标题栏窗口的拖动问题有两种方案一种方案是使用常规思路来处理鼠标拖拽事件当窗口获得WM_LBUTTONDOWN(OnLButtonDown)时,通过设置标志并调用CWnd::SetCapture()函数来让当前窗口捕捉鼠标消息,
阅读全文
摘要:我们知道,很多程序都可以设置透明度,或者至少有半透明的窗口。在做界面的时候你大概也会想加入一些这样的元素。限于水平,谈谈我自己所知道的编写方法吧。 所需函数原型: BOOL WINAPI SetLayeredWindowAttributes(HWND hWnd, COLORREFcrKey, BYTE bAlpha, DWORD flag); 参数含义: hWnd: 所要设置的窗口句柄。 flag: 透明方式,可取两个值:LWA_COLORKEY(其值定义为0x1)和LWA_ALPHA(其值定义为0x2)。可取二者的组合。 crKey: 掩码颜色,当flag取值为LWA_COLORKE...
阅读全文
摘要:oskycarCCommandLineInfo详解-启动不创建新文档【对单文档有问题?】问:其实这里面还有问题,如果是单文档应用程序,这样做会出错。虽然编译连接都能通过,但是调试运行是到这里提示出错而中断了。错误:在winocc.cpp文件的这句话:ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));处程序中断了。似乎是因为无法创建窗体的原因。后来只能通过:指定启动时打开默认文档才避免了出错。。。如下:cmdInfo.m_strFileName="h.bmp"; //指定默认文件名cmdInfo.m_nShellComma
阅读全文
摘要:假如现在有一个类型为LPARAM的变量lParam,要将其转化为CString类型,可以:①CString str((char*)lParam); --构造函数②CString str;str=(char*)lParam; --运算符重载③使用CString的格式化函数:CString str;str.format("%s", (char*)iParam);④一个行不通的办法!但是仔细一看却和方法②相差无几。CString str=(char*)lParam; --拷贝构造函数 (此时会编译不成功。提示:“初始化”: 无法从“char *”转换为“ATL::CStringT
阅读全文
摘要:一、Invalidate介绍 void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,...
阅读全文
摘要:1.CObject类为MFC总类,该类下面有一个重要的类CCmdTarget。而CCmdTarget类下面又有四个重要的继承类,分别为:CWinThread、CDocument、CDocTemplate、 CWnd类。所以,可以得出一个大概继承图,如图所示:CObject--->CCmdTarget ---->CWinThread ---->CWinApp ----->CDocTemplate ----->CDocument ----->CWnd 其中CWnd类下属又有几个重要的继承类,分别为CFrameWnd、CDialog、CView、Controls、
阅读全文
摘要:我想,初学者啊,对像我一样的mfc初学者来说,这些入门练习还是很有必要做做的,也应该会有一定的参考价值,那么言归正传。大家都知道的操作废话我就不多说,CTRL+SHIFT+N建立一个新项目,有图有真相,直接上图:点击上图的“确定”之后,除了下图内容要改一下之外,其他的“MFC应用程序向导”全部予以默认即一路不需改动!那么直接如图所示:把默认的“多个文档”改成“单个文档”。 “MFC应用程序向导”完成之后,首先请关注“解决方案资源管理器”,那么如下图所示。本练习只需关注图示红框中的文件,用以“加入显示功能”。*****************************************...
阅读全文