![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
jjdujiang
这个作者很懒,什么都没留下…
展开
-
托盘程序
OnCreate NOTIFYICONDATA nid; nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); nid.hWnd = this->m_hWnd; nid.uID = IDR_MAINFRAME; nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP原创 2016-04-02 15:10:29 · 249 阅读 · 0 评论 -
获取窗口大小
GetClientRect():以窗口客户区左上角为基准。GetWindowRect():以屏幕左上角为基准。GetWindowRect()->ScreenToClient() = GetClientRect();GetClientRect()->ClientToScreen() = GetWindowRect();MapWindowPoints(from, to, points,原创 2016-03-24 12:43:30 · 998 阅读 · 0 评论 -
sendmessage死锁问题
首先我要先简要的说明一个和这个话题有关系的消息处理机制: 在Window操作系统当中,窗口时属于所在Thread的也就是说 你这个窗口在那个Thread 当中Create 的那么你这个窗口就属于那个Thread。同时窗口的消息处理函数也都会在这个Thread 当中被执行的。(不要问为什么 Window 就是这么设计的 嘿嘿) 在讲死锁之前我们先把SendMessage的原创 2016-05-24 12:16:17 · 1553 阅读 · 0 评论 -
非模态对话框
实现可编辑表格// DlgGridEdit.cpp : 实现文件//#include "stdafx.h"#include "DlgGridEdit.h"#include "..\DuInclude\DuMessage.h"// CDlgGridEdit 对话框IMPLEMENT_DYNAMIC(CDlgGridEdit, CDialog)CDlgGridEdit::C原创 2016-05-14 10:06:11 · 324 阅读 · 0 评论 -
点数大小 与 字体高度 的关系
lfHeight = -1.f * nPointSize * LOGPIXELSX / 72 + 0.5f;nPointSize = -1.f * lfHeight * 72 / LOGPIXELSX + 0.5f;原创 2016-04-02 21:52:03 · 1776 阅读 · 0 评论 -
很多控件的消息处理
如果一个对话框上有很多控件,可以归并到一起,例如button,combobox经调试发现可以在OnCommand这个虚函数中统一处理UINT nID = LOWORD(wParam);HWND hWndCtrl = (HWND)lParam;int nCode = HIWORD(wParam);nID是控件IDnCode是控件的消息码例如button的BN_CLICKE原创 2016-05-19 17:15:07 · 349 阅读 · 0 评论 -
对话框启动默认一个编辑框选中可编辑状态
对于有些对话框要求用户输入某些信息时,为了人性化设计,可以考虑对话框启动之后就有一个编辑框选中可编辑,经过研究对话框启动之后默认焦点控件是tab键为1的控件,如果想某个控件焦点,OnInitDialog必须返回FALSE,OnInitDialog返回TRUE,默认焦点,返回FALSE,制定控件获取焦点CEdit * pEdit = (CEdit*)GetDlgItem(IDC_EDIT_N原创 2016-06-02 08:52:56 · 340 阅读 · 0 评论 -
遍历对话框中的子控件
CWnd * pWnd = GetWindow(GW_CHILD); while (pWnd != NULL) { pWnd->SetFont(GetFont()); pWnd = pWnd->GetNextWindow(); }原创 2016-05-20 12:40:07 · 865 阅读 · 1 评论 -
error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件
工程属性-> 链接器->常规->注册输出 ,将此项选择否。原创 2016-09-19 13:59:11 · 5046 阅读 · 0 评论 -
导入导出excel
添加类 TypeLib中的MFC类,总共7个类CApplication、CFont0、CRange、CWorkbook、CWorkbooks、CWorksheet、CWorksheets进入刚添加进来的几个类头文件中将#import开头的这句注掉// #import "C:\\Program Files (x86)\\Microsoft Office\\Office12\\EXCE原创 2016-08-03 10:41:07 · 422 阅读 · 0 评论 -
预处理器定义宏
EXE和DLL都定义宏WIN32,_WINDOWS。Debug和ReleaseDebug定义宏_DEBUG,而Release定义宏NDEBUG。多字节字符集和Unicode字符集多字节字符集定义宏_MBCS,而Unicode定义宏_UNICODE、UNICODE。EXE和DLL都用到的_AFXDLL 在共享DLL中使用MFCDLL用到的原创 2016-03-21 20:15:56 · 1430 阅读 · 0 评论 -
宏
#,把后面的内容转变成字符串#abc 等价于 "abc"##,前后连接abc##def 等价于 abcdef原创 2016-03-21 10:46:05 · 230 阅读 · 0 评论 -
导出DLL
1:源代码中的 __declspec(dllexport)2:.def 文件中的 EXPORTS 语句3:LINK 命令中的 /EXPORT 规范warning LNK4070: .EXP 中的 /OUT:***.dll 指令与输出文件名“***_d.dll”不同;忽略指令方法1:删除.def文件中 LIBRARY "***"这一行方法2:删除.def文件方法3:新原创 2016-03-21 20:25:23 · 308 阅读 · 0 评论 -
界面
隐藏标题栏主框架OnCreate函数中ModifyStyle(WS_CAPTION, 0, 0);隐藏菜单void CMDIFrameWndEx_THS::RecalcLayout(BOOL bNotify){ // TODO: 在此添加专用代码和/或调用基类 CDocManager *pDocManager = AfxGetApp()->m_pDocManage原创 2016-03-21 20:46:57 · 369 阅读 · 0 评论 -
MFC常用类成员函数
CWndCWnd* PASCAL CWnd::FromHandlePermanent(HWND hWnd),查找该句柄是否有对应的CWnd*类。原创 2016-03-24 10:51:22 · 460 阅读 · 0 评论 -
主框架背景
vc6 与 VS2008 不一样在vc6下,重载主框架的OnCreateClient函数,自定义一个类继承CWnd,绑定到客户窗口句柄m_hWndMDIClient,在新类中画图,例如响应消息ON_WM_ERASEBKGND,但是此种方法在VS2008当中行不通,因为在主框架OnCreateClient函数之后m_hWndMDIClient已经绑定了窗口m_wndClientArea,VS20原创 2016-03-24 11:13:57 · 434 阅读 · 0 评论 -
窗口风格
隐藏标题栏在主窗口的OnCreate函数中添加ModifyStyle(WS_CAPTION, 0, 0);隐藏菜单栏重写虚函数void CMDIFrameWndEx_Ex::RecalcLayout(BOOL bNotify){ // TODO: 在此添加专用代码和/或调用基类 CDocManager *pDocManager = AfxGetApp()->原创 2016-03-21 11:56:11 · 368 阅读 · 0 评论 -
最大化与最小化
判断是否最大化:IsZoomed(HWND)判断是否最小化:IsIconic(HWND)最大化 ::PostMessage(HWND, WM_SYSCOMMAND, SC_MAXIMIZE, 0);最小化 ::PostMessage(HWND, WM_SYSCOMMAND, SC_MINIMIZE, 0);最大化还原 ::PostMessage(HWND, WM_S原创 2016-03-24 13:45:44 · 458 阅读 · 0 评论 -
获取主框架、子框架、文档、视图的指针
在多线程程序中AfxGetApp()->m_pMainWnd 应用程序主线程的句柄,在一个多线程应用程序中是唯一的AfxGetMainWnd() 调用线程的句柄,暨当前语句所在线程的句柄,不唯一。原创 2016-03-23 19:14:38 · 411 阅读 · 0 评论 -
通过子窗口创建视图
在项目开发过程当中,重写了子框架的虚函数OnCreateClient,去掉窗口分割,忘记创建视图导致视图不对,经过调试,忘写一段代码。 if (pContext != NULL && pContext->m_pNewViewClass != NULL) { if (CreateView(pContext, AFX_IDW_PANE_FIRST) == NULL)原创 2016-03-24 20:24:08 · 300 阅读 · 0 评论 -
MFC六大核心机制之三:动态创建
先了解一下CRuntimeClass原创 2016-03-25 15:34:24 · 275 阅读 · 0 评论 -
把VC6代码移植到VS2010平台下
主要是修改for循环里的变量int i但是最后运行失败,用depends查看发现,有一个动态库不对,通过电脑事件查看器发现如下错误Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8",原来该动态库是用VS...原创 2018-12-14 22:38:16 · 730 阅读 · 0 评论