随笔分类 - MFC
摘要:这个定时关机运行过后默认最小化到托盘栏最好了,不用每次都去点了。现在来看看如何将程序显示在托盘栏。首先在头文件里声明一个变量和一个消息响应函数1 //最小化到托盘栏2 //第一步,生成一个成员变量,或者一个全局变量3 NOTIFYICONDATA m_NOTIFYICON;4...
阅读全文
摘要:虽然上一篇实现了的定时关机,但是还不够完善,比如开机自动启动,然后按照配置的时间定时关机,并最小化到任务栏。先来说开机启动怎么实现,开机启动实现的方法有好几种,比如直接在开始菜单启动项里添加一个程序的快捷方式,路径为 C:\ProgramData\Microsoft\Windows\Start M...
阅读全文
摘要:写个定时关机程序自用,界面简单实用,最终界面如下第一步,新建一个MFC对话框应用程序,拖几个控件过来,界面如下:然后给下拉列表框,复选按钮绑定变量,以方便进行操作。 CComboBox m_com_hour; CComboBox m_com_minute; CComboBox m_com...
阅读全文
摘要:今天引用外来库时出现问题,也许是版本问题。错误如下:.....\oursun\cincludes\quickdraw.h(309): error C2011: “Picture”:“struct”类型重定义1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\comdef.h(326) : 参见“Picture”的声明其中Picture声明如下:__if_not_exists(Picture){ struct Picture : IPictureDisp {};}struct定义如下:struct Pict..
阅读全文
摘要:敲代码时,突然发现有一个背景图片无法显示,百思不得其解,最终发现是MoveWindow() SetWindowPos()这两个函数的使用不当造成的。 这里把这两个函数的前世今生给分析一下。 先看MoveWindow()函数,用于改变窗口的位置和尺寸,对于顶层窗口,按照屏幕对齐与左上角,对于子窗口,则对齐与父窗口的左上角。BOOL MoveWindow( HWND hWnd,int x, int y, int nWidth, int nHeight,BOOL bRepaint = TRUE);// 第一个表示窗口句柄; 参数x,y表示窗口的左上角起点; 参数nwidth,nHeig...
阅读全文
摘要:今天做项目时,直接拷贝了另一个工程里的头文件和源文件,然后运行时就出现这种问题,莫名其妙,在原程序里运行一点问题就没有,但是在新工程里就是error。1 1>e:\c++\button_fly2\button_fly2\gdipbutton.cpp(216): error C2065: “ColorMatrix”: 未声明的标识符2 1>e:\c++\button_fly2\button_fly2\gdipbutton.cpp(216): error C2146: 语法错误: 缺少“;”(在标识符“HotMat”的前面)3 1>e:\c++\button_fly2\butto
阅读全文
摘要:最近项目需要实现按钮的动态效果,多方学习,现在终于能实现一些功能了。过程如下: 第一,新建一MFC对话框应用程序。 第二,删除自带按钮,并添加两个按钮,button1,button2,ID为IDB_BUTTON1,IDB_BUTTON2.同时响应鼠标单击按钮事件。如下void Cbutton_fly3Dlg::OnBnClickedButton2()//video2{ // TODO: 在此添加控件通知处理程序代码 MessageBox(L"video2");//这里简单测试一下} 第三,添加位图资源,在资源视图下添加几张图片,如下图 第四,设置按钮参数OwnerDraw为
阅读全文
摘要:第八章Document-View 深入探讨(总结) 1、Document Document 在MFC 的CDocument 里头被具体化。CDocument 本身并无任何具体数据,它只是提供一个空壳。当你开发自己的程序,应该从CDocument 衍生出一个属于自己的Document 类别,并且在类别中声明一些成员变量,用以承载(容纳)数据。然后再(至少)改写专门负责文件读写动作的Serialize 函数。应为他派生至CObject,所有它有CObject 所支持的一切性质,包括执行时期型别信息(RTTI)、动态生成(Dynamic Creation)、文件读写(Serialization)..
阅读全文
摘要:第六章 MFC程序的生死因果 MFC学习过程,这个方法不错,条例清晰。 1、CWinApp -- 取代WinMain地位 WinMain函数的功能由CWinApp的三个函数实现1 virtual BOOL InitApplication();2 virtual BOOL InitInstance();3 virtual int Run(); 在CWinThread类中定义m_pMainWnd CWnd* m_pMainWnd; // 记录主窗口的句柄 2、CFrameWnd --- 取代WndProc的地位 通过消息映射来实现消息与函数的关联,宏DECLARE_MES...
阅读全文
摘要:第七章MFC骨干程序 所谓骨干程序就是指有AppWizard生成的MFC程序。如下图的层次关系是程序中常用的几个类,一定要熟记于心。 1Document/View应用程序 CDocument存放资料内容,CView显示资料,并且负责最资料的编辑、修改。 有关文件读写的动作在CDocument 的Serialize 函数进行,有关画面显示的动作在CView 的OnDraw 或OnPaint 函数进行。 程序每打开一份文件(资料),就应该产生三份对象: 1. 一份Document 对象, 2. 一份View 对象, 3. 一份CMDIChildWnd 对象(做为外框...
阅读全文
摘要:最近看侯捷的MFC深入浅出,简单总结一下。第一章首先就是先了解一下windows程序设计的基础知识,包括win32程序开发基础,什么*.lib,*.h,*.cpp的,程序入口点WinMain函数,窗口注册,消息循环,消息映射等。还有控制台(console)应用程序的运行过程以及与MFC的区别,进程与...
阅读全文
摘要:给对话框添加背景只需在OnPaint()函数里添加以下代码就可以实现 1 /*************添加对话框背景图片**************************************************************************/ 2 /*获取设备当前大小*/ 3 CPaintDC dc(this); 4 CRect rc; 5 GetClientRect(&rc); ...
阅读全文
摘要:绝对路径很简单,但是隐患比较大,如果程序位置有变动,就会出现找不到文件的问题。使用起来也比较简单。如CString strPath = L"";strPath += "d:\\work\\1.avi";//这就是绝对路径相对路径使用起来最方便,不用担心程序的位置变化引起的故障。从IDE环境运行程序的时候,默认当前路径是工程项目所在路径,也就是dsp文件,sln文件所在路径。 //读取配置文件 CString strflash,strVideo; CString des = L""; ::GetCurrentDirectory(_MAX
阅读全文
摘要:一、线程的创建HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); 该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下: ...
阅读全文
摘要:两个对话框之间的通信,可以用非模态对话框来实现首先新增一对话框,id为IDD_DIALOG2然后可添加一Edit Control 控件用于显示接受的数据,给对话框添加类,并把头文件包含到Dialog1里面。声明一对话框指针CTestDialog *m_pTest;并在构造函数里初始化为空m_pTest = NULL;在Dialog1中添加一按钮,用于打开Dialog2 1 void CEdit_TestDlg::OnBnClickedButton1() 2 { 3 // TODO: 在此添加控件通知处理程序代码 4 CString str =L""; 5 str += ..
阅读全文