随笔分类 -  MFC

MFC对话框打印预览异常问题解决
摘要:昨天在别人的电脑上成功运行了上次我写的打印预览程序,但是今天换了一台电脑就不能运行了,让我觉得非常奇怪。提示的错误信息是“内存XXXX不能为read”,“mfc100d.dll”中有未经处理的异常。奇怪的是,我加了try catch语句后依然出错。我首先尝试了dll链接和动态链接,发现仍然无法解决。然后我尝试了在网上下载mfc100.dll,拷贝到system32目录下,依然出错。由于这种问题我基本上可以确定是操作系统环境的问题,于是我搜索了“电脑不能打印预览解决方法”,发现可能是打印机没有安装驱动或者是打印服务没有启动,于是:一、启动打印服务:右击“我的电脑”\“管理”\"服务和应 阅读全文
posted @ 2012-10-26 10:46 Jiang, X. 阅读(1493) 评论(1) 推荐(0)
VC隐藏控件
摘要:GetDlgItem(IDC_BUTTON1)->ShowWindow(SW_HIDE);GetDlgItem:通过ID得到窗口的句柄GetDlgItem functionApplies to:desktop apps onlyRetrieves a handle to a control in the specified dialog box.SyntaxC++HWND WINAPI GetDlgItem( _In_opt_HWND hDlg, _In_int nIDDlgItem);ParametershDlg[in, optional]Type:HWNDA handle to th 阅读全文
posted @ 2012-10-26 08:54 Jiang, X. 阅读(1178) 评论(0) 推荐(0)
以消息为基础,以事件驱动之(message based, event driven)-- 《深入浅出MFC》
摘要:Windows 程序的进行系依靠外部发生的事件来驱动。换句话说,程序不断等待(利用一个while 回路),等待任何可能的输入,然后做判断,然后再做适当的处理。 上述的「输入」是由操作系统捕捉到之后,以消息形式(一种数据结构)进入程序之中。 操作系统通过USER模块(WINDOWS三大模块之一)捕捉外围设备(如键盘和鼠标)所发生的事件。 应用程序获得的2类输入: 由硬件装置所产生的消息(如鼠标移动或键盘被按下),放在系统队列(system queue)中 由Windows 系统或其它Windows 程序传送过来的消息,放在程序队列(application queue)中。 ... 阅读全文
posted @ 2012-10-20 12:15 Jiang, X. 阅读(574) 评论(0) 推荐(0)
MFC程序需要的函数库及头文件--《深入浅出MFC》
摘要:Windows程序调用的函数可分为2部分:C Runtimes + Windows API。C Runtimes: LIBC.LIB -- C Runtime函数库的静态链接版本 MSVSRT.LIB--C Runtime库的动态链接版本(如果要链接这一函数,你的程序执行时必须有MSVCRT40.DLL在场)Windows API: 由操作系统本身提供,主要是Windows三大模块:GDI32.DLL USER32.DLL KERNEL32.DLL所有Windows程序都必须载入WINDOWS.H,不过,它只照顾三大模块所提供的API。 阅读全文
posted @ 2012-10-20 11:59 Jiang, X. 阅读(337) 评论(0) 推荐(0)
Win32程序开发流程--《深入浅出MFC》
摘要:Windows程序分为2部分:程序代码 + UI资源。这2部分最后以RC编译器整合为一个完整的EXE档案。UI资源的实际内容是借助各种工具产生的,如.ico .bmp .cur文件等。程序员必须在资源描述文档(.rc)中描述他们。RC编译器读取RC文件的描述后将所有UI资源文件集中制作出一个.RES文件,再与程序代码结合在一起,这才是一个完整的Windows可执行文件。 阅读全文
posted @ 2012-10-20 10:42 Jiang, X. 阅读(261) 评论(0) 推荐(0)
ifstream文件是否存在的判断
摘要:在打开文件时常常需要判断文件是否存在,可用如下代码。1 ifstream inFile(filename, ios::in);2 3 if(!inFile.is_open())4 {5 return;6 } 阅读全文
posted @ 2012-10-19 10:54 Jiang, X. 阅读(1983) 评论(0) 推荐(0)
如何发布动态库下的MFC程序
摘要:1.选择Release,编译器会做一些自动的优化。曾经有一个程序在debug下运行30min,在release下只需要运行几分钟,充分说明了release优化的效果。2.找出其所以来的dll程序,我使用了Dependency Walker(http://www.dependencywalker.com/)。它可以根据exe文件得到其所依赖的dll文件及其路径。3.把exe与dll放在一个路径下。4.打包。我使用的是Inno Setup。 阅读全文
posted @ 2012-10-19 10:38 Jiang, X. 阅读(1331) 评论(0) 推荐(0)
MFC设置对话框大小
摘要:1.设置对话框大小:1 CRect temprect(0,0,1640,1480);2 CWnd::SetWindowPos(NULL,0,0,temprect.Width(),temprect.Height(),SWP_NOZORDER|SWP_NOMOVE);2.使对话框全屏显示:1 //得到显示器大小2 int cx,cy;3 cx = GetSystemMetrics(SM_CXSCREEN);4 cy = GetSystemMetrics(SM_CYSCREEN);5 //再用MoveWindow6 CR... 阅读全文
posted @ 2012-10-18 10:17 Jiang, X. 阅读(29143) 评论(0) 推荐(0)
MFC改变对话框背景色
摘要:①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog {... protected: CBrush m_brush; ... }; ---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::OnInitDialog() { ... // TODO: Add extra initialization here m_brush.CreateSolidBrush(RGB(0, 255, 0)... 阅读全文
posted @ 2012-10-18 10:11 Jiang, X. 阅读(535) 评论(0) 推荐(0)
MFC对话框的打印预览实现
摘要:1.创建MFC对话框工程,选择在共享库中调用。2.添加文件:MainFrm.h, MyPreviewView.h, WrapperView.h, MainFrm.cpp, WrapperView.cpp分别为:MainFrm.h 1 // MainFrm.h : interface of the CMainFrame class 2 // 3 ///////////////////////////////////////////////////////////////////////////// 4 5 #if !defined(AFX_MAINFRM_H__5C3F89A6_932E_1.. 阅读全文
posted @ 2012-10-18 09:57 Jiang, X. 阅读(9100) 评论(0) 推荐(2)
VC高精度定时
摘要:一、VC实现高精度定时器__基本流程 1、头文件包含 #include <MMSystem.h> 2、类成员中添加变量 UINT m_iTimerId; //定时器句柄 3、创建回调函数,响应定时器事件 void CALLBACK CatchTimer ( UINT IDEvent, UINT uReserved, DWORD dwUser, DWORD dwReserved1, DWORD dwReserved2) { //在这里写定时器事件的处理 } 4、开始启动定时器 //设置定时器分辨率,1ms timeBeginPeriod(1); //产生间隔1... 阅读全文
posted @ 2012-09-15 10:42 Jiang, X. 阅读(3485) 评论(0) 推荐(0)
CRecordset类
摘要:CRecordset类 CRecordset类代表一个记录集.该类是MFC的ODBC类中最重要、功能最强大的类。10.5.1 动态集、快照、光标和光标库 在多任务操作系统或网络环境中,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。例如,当某一个应用改变了数据源中的记录时,别的连接至该数据源的应用应该如何处理。对于这个问题,基于MFC的ODBC应用程序可以采取几种不同的处理办法,这将由程序采用哪种记录集决定。 记录集主要分为快照(Snapshot) 和动态集(Dynaset)两种,CRecordset类对这两者都支持。这两种记录集的不同表现在它们对别... 阅读全文
posted @ 2012-09-15 10:11 Jiang, X. 阅读(1504) 评论(0) 推荐(0)