mfc

Windows 10 : Pen (stylus) not working on MFC application

折月煮酒 提交于 2020-06-17 07:53:39
问题 I have an MFC application that works fine with Pen (Stylus) under Windows 7, but unfortunately, it does not work on Windows 10. Under Windows 7 , I am able to scroll vertically with the stylus WITHOUT using ( clicking and dragging ) the scroll bar, i can scroll vertically by clicking and dragging from anywhere in my dialog (formview) Under Windows 10 , I am not able to scroll vertically with the stylus WITHOUT using ( clicking and dragging ) the scroll bar. I must click (and drag) with the

Loading JPEG file from resources in MFC C++ application

让人想犯罪 __ 提交于 2020-06-17 02:07:28
问题 The following code works correctly under Windows XP: CImage image; RECT destRect; int nResource = 10; CResourceStream stream(0, MAKEINTRESOURCE(nResource), _T("JPEG")); HRESULT hr = image.Load(&stream); image.Draw(hDC, destRect); But on Windows 7 image.Load returns E_FAIL though creating CResourceStream reads JPEG file from resources correctly. Debugging gives the following result: GdipCreateBitmapFromStream returns InvalidParameter . What the problem can be? JPEG is a custom category in

MFC之RTTI分析(基于侯俊杰的《深入浅出MFC》)

有些话、适合烂在心里 提交于 2020-04-07 04:57:52
MFC框架早在标准C++之间提出并实现了类的运行时识别(RTTI)功能,下面记录下基于我对其的理解。 要实现RTTI必须在定义的时候记录下来类的基本信息。MFC构建了一个CRuntimeClass的结构体用以保存类的基本信息。CRun提么Class的定义如下: struct CRuntimeClass { LPCSTR m_pszClassName; //类名称 int m_nObjectSize; //类的大小 UINT m_wSchema; CObject (PASCAL * m_pfnCreateObject)(); CRuntimeClass *m_pBaseClass; //类的基类(父类) static CRuntimeClass *pFirstClass;//保存类信息的链表头指针 CRuntimeClass *m_pNextClass;//链表的下一个 }; 在定义好这样一个结构体后,在每个类中添加一个这样的成员(静态的)即可。这样的每个实例都可以通过该属性访问到类的相关信息。这样的定义是属于类的所有对象共有的,在定义类的时候就已经定义好了,所以只需要将该属性定义为静态的即可。通过这种做法每个类都保存的类的所有相关信息,但是如果要查找类的相关信息是不够的,所以通过链表的方式将这些类的CRuntimeClass静态属性组织起来,这样可以遍历程序中的所有类

MFC

梦想与她 提交于 2020-04-05 15:54:41
MFC 开发 VS 创建 MFC 项目 点击 MyMFC.rc 打开资源视图 , 找到 Dialogs, 右键插入 Dialog 可以创建新的 Dialog 界面 , 右键 Dialog 可以创建与其关联的类 , 实现逻辑 ; Dialog 很重要 , Win32 程序就是通过 Dialog 实现页面的 ( 同理 Qt 也如此 ) 结构 CWinApp: 应用程序 CFrameWnd: 窗口 , 类似于画框 CChildView: 在 CFrameWnd 中的子窗口 , 类似于画布 , 微软建议将内容都放在 View 中 使用 MFC 实现一个有功能的应用程序 一开始显示登录对话框 , 创建登录对话框要在 CWinApp 中的 CWinApp::InitInstance() 调用父类之前创建 可以重写对话框的 OnInitDlg 方法进行一些初始化 关闭释放资源需要使用 Dialog::Ok() 或者 Dialog::Cancle() 控件和对应的变量对应数据同步问题 UpdateData(TRUE) 将控件中的数据同步到变量中 UpdateData(FALSE) 将变量中的数据同步到控件中 在对话框中如果选择 Edit Control( 文本输入框 ) 时回车则调用对话框的 OnOk 方法 , 按住 esc 则调用 OnCancle() 方法 , 如果有需要可以重写这两个方法

MFC用CFile写文件

瘦欲@ 提交于 2020-04-04 04:01:25
其实,unicode字符已经被Cfile输入了文件当中。但是字处理软件不知道其中是unicode字符,将他们统统当做了单字节字符处理。所以我只需要加入unicode的识别码就行了 CFile file; if(file.Open(path.GetBuffer(), CFile::modeCreate | CFile::modeWrite)) { WORD unicode = 0xFEFF; file.Write(&unicode,2); //此处写入unicode的识别码 file.Write(content, wcslen(content)*sizeof(wchar_t)); CString strEnter; strEnter="\r\n"; file.Write(strEnter, 4); file.Close(); } 来源: https://www.cnblogs.com/wang-can/p/3301935.html

MFC文件复制、删除

主宰稳场 提交于 2020-04-04 03:34:59
VC:文件操作大全,打开,保存,复制,删除,查找等 各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效的代码。本文对Visual C++中有关文件操作进行了全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行了详细分析。 1. 文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类“CFileFind”,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。 CString strFileTitle; CFileFind finder; BOOL bWorking = finder.FindFile(“C:\windows\sysbkup\*.cab”); while(bWorking) { bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle(); } 2. 文件的打开/保存对话框 让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类“CFileDialog”用于实现这种功能。使用“CFileDialog”声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框

在MFC中添加用户自定义消息

梦想与她 提交于 2020-04-03 11:51:17
1、定义一个宏 (用户自定义消息从WM_USER开始) #define WM_XXXXX WM_USER+数值 2、声明一个函数并实现 afx_msg LRESULT OnXXXXX( WPARAM wParam, LPARAM lParam); 3、关联宏和函数 BEGIN_MESSAGE_MAP(CWlsNetMp3PlayerClientDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BTN_PLAY, &CWlsNetMp3PlayerClientDlg::OnBnClickedBtnPlay) ON_BN_CLICKED(IDC_BTN_PAUSE, &CWlsNetMp3PlayerClientDlg::OnBnClickedBtnPause) ON_BN_CLICKED(IDC_BTN_STOP, &CWlsNetMp3PlayerClientDlg::OnBnClickedBtnStop) ON_MESSAGE(WM_XXXXX,OnXXXXX) ON_NOTIFY(NM_CLICK, IDC_LIST_MP3_TABLE, &CWlsNetMp3PlayerClientDlg::OnClickListMp3Table) END

MFC TabCtrl 控件修改标签尺寸

拜拜、爱过 提交于 2020-04-03 11:50:25
注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.net/u012702039/article/details/22668161 CSize size, size1; size.cx = 150; size.cy = 40; size1 = m_tab.SetItemSize(size); 第二种方法 MSDN:About Tab Controls (Windows) https://msdn.microsoft.com/en-us/library/bb760550(v=vs.120).aspx 进入MSDN 关于Tab Control 的官方页面,找到我们需要的修改标签位置和尺寸。 通过SetItemSize函数可以精确的设置Tab标签的尺寸。 点击进入这个函数的说明: 这一页没有实质的内容,继续点击进入详情页,终于有了说明: 于是在程序里这么写: TabCtrl_SetItemSize(m_tab, 150, 40); 其中m_tab是控件关联的变量。 注意要设置Tab控件区域中子对话框rs.top的数值要与设置的Tab标签高度一致: 这里都设置为40,否则会出现留白或者标签的字被遮挡。 //获得IDC_TABTEST客户区大小

MFC - 删除指定文件夹

百般思念 提交于 2020-04-02 21:00:15
1 // 删除指定的文件夹 2 void DeleteDirectory(CString strDir) 3 { 4 if (strDir.IsEmpty()) 5 { 6 RemoveDirectory(strDir); 7 return; 8 } 9 10 //首先删除文件及子文件夹 11 CFileFind ff; 12 BOOL bFound = ff.FindFile(strDir + _T("\\*"), 0); 13 while (bFound) 14 { 15 bFound = ff.FindNextFile(); 16 if (ff.GetFileName() == _T(".") || ff.GetFileName() == _T("..")) continue; 17 18 //去掉文件(夹)只读等属性 19 SetFileAttributes(ff.GetFilePath(), FILE_ATTRIBUTE_NORMAL); 20 if (ff.IsDirectory()) 21 { 22 //递归删除子文件夹 23 DeleteDirectory(ff.GetFilePath()); 24 RemoveDirectory(ff.GetFilePath()); 25 } 26 else 27 { 28 DeleteFile(ff.GetFilePath())