- 博客(35)
- 资源 (131)
- 收藏
- 关注
原创 2020-08-12
再 谈 Win32 窗口 去除标题栏以及所有的边框使用 Rgn 来去除标题栏以及所有的边框BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){ HWND hWnd; RECT rc; int edgeX; int edgeY; hWnd = CreateWindow(szWindowClass, "Win32Tab", WS_SYSMENU,//WS_OVERLAPPEDWINDOW, CW...
2020-08-12 16:46:59
140
原创 再谈CListCtrl的 各列 排序
为了搞清楚 CListCtrl 的 SetItemData 中 Data 指的是 什么。写了如下函数int CALLBACK CompareName(LPARAM lParam1, LPARAM lParam2, LPARAM subItem){ CListCtrl3Dlg *pDlg=(CListCtrl3Dlg *)AfxGetMainWnd(); CListCtrl*...
2019-12-23 10:51:22
175
原创 自己读ico文件再绘制icon
最近 写了 一个 IconLoadDraw 函数,可以读取 ico 文件 ,并 绘制在对话框上。如果 ico 里 有 png 的 icon 可以 另存为 png 文件。BOOL CIconReadDlg::IconLoadDraw(LPCTSTR pszFileName){ HANDLE hFile = CreateFile(pszFileName,GENERIC_READ,0,...
2019-06-11 16:50:17
530
原创 限制对话框的移动范围
下面是限制对话框的移动范围方法void CxxxxDlg::OnMoving(UINT fwSide, LPRECT pRect) { CDialog::OnMoving(fwSide, pRect); // TODO: Add your message handler code here#if 1#define MOSTLEFT 100#define MOS
2016-09-06 09:18:36
750
原创 局部变量创建非模态对话框
不用new创建非模态对话框方法如下:int DoEvents(){ MSG msg; // Process existing messages in the application's message queue. // When the queue is empty, do clean up and return. while (::PeekMes
2016-07-18 10:14:29
486
原创 CFormView 在改变大小时,控件闪烁的问题
下面是 这个问题的 解决办法://///////////////////////////////////////////////////////////////////////////// CFormView 在改变大小时,控件闪烁的问题//#define VIEW_NO_BORDER BOOL CSizingFormViewView::PreCreateWindow(CREA
2015-11-17 12:21:44
1367
2
原创 VC 粘贴 CF_METAFILEPICT 格式 MetaFile
BOOL CALLBACK MyProc (EmfPlusRecordType recordType,UINT flags,UINT dataSize,const BYTE* data,VOID *callbackData){// afxDump Metafile *pMtf=(Metafile *)callbackData;switch (recordType){case
2015-09-23 15:23:57
2350
原创 工具条停靠后窗口的扩展
1. 用向导创建一个 SDI 程序,在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 中加入://HBRUSH hbr=CreateSolidBrush(RGB(0,255,255));SetClassLong(m_wndToolBar.m_hWnd,GCL_HBRBACKGROUND,(long)hbr);m
2014-11-29 14:47:41
666
原创 MsComm32.ocx 在 低 波特率 时 的 TtimeOut
MsComm 在 波特率太低。MsComm 可能 有 dug。而 MSCOMM32 没有 设置 timeouts 的。试试 :HANDLE com_id=(HANDLE) MsComm.GetCommID();COMMTIMEOUTS to;ZeroMemory(&to,sizeof(to));// 全部为0, 表示 没有 TimeOuts。SetCommTi
2014-09-19 13:30:13
1097
1
原创 点击客户区,创建非模态对话框,马上可以移动这个对话框
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) {// 点击客户区// TODO: Add your message handler code here and/or call defaultif(IsWindow(m_Dlg.m_hWnd)) m_Dlg.DestroyWindow();//m_Dlg.Cre
2014-08-02 14:22:39
1284
原创 MFC不会再打开 已经打开的文件
void CReopenApp::OnFileOpen() {// TODO: Add your command handler code hereCString newName;if(!DoPromptFileName(newName,AFX_IDS_OPENFILE, OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,TR
2014-05-17 14:00:06
1280
2
转载 RS232 串口 的 BREAK 条件
** "Break" condition** A "break condition" occurs when the receiver input is at the "space" level for longer than some duration of time,** typically, for more than a character time.** This is no
2014-05-01 15:53:15
4707
2
原创 窗口随时置顶
如果需要自己的窗口在某时刻 置顶,可以这样:如 :OnTimer{ CPoint pt; GetCursorPos(&pt); CWnd *pWinAny=WindowFromPoint(pt); DWORD tidOrig=GetWindowThreadProcessId(pWinAny->m_hWnd,0); DWORD tid=Get
2014-01-27 13:02:49
2253
原创 使用MODBUS的注意事项
RTU 帧 使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始1。在网络波特率下多样的字符时间,这是最容易实现的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5
2013-07-14 19:27:35
1756
原创 代码控制 ToolBar 的 停靠
在 ‘View’ 菜单中 加 一项 “停靠”, 在 MainFrame 中 响应:void CMainFrame::OnDockbar() {// TODO: Add your command handler code hereif(m_bDock){m_bDock=FALSE;m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);E
2013-06-29 16:52:30
847
原创 MainFrame 去除边框的方法
用MFC创建的SDI程序,在默认情况下是带 Caption 标题栏的,这样标题栏的外面有个 3 个 pixels 的边框。这个边框很不容易去除。下面的代码可以做到:void CMainFrame::ActivateFrame(int nCmdShow) {// Do not put it in "OnCreate()" !, where 'wrc' is wrong.//
2012-10-28 16:23:08
3496
3
原创 IR2175电流传感器的缺点
使用IR2175电流传感器时有2个缺点:1。零电流时占空比不为50%,测试后发现差1%左右。在48.8%左右。2。输出频率不可调,而且偏高140k(80k最好)。请了解的帮助。
2012-04-29 10:56:55
1611
1
原创 ListCtrl 锁定列宽度的简单方法
有时候需要锁定report 格式下的listctrl的列宽度。为此要响应HDN_BEGINTRACK及WM_SETCURSOR等消息,比较麻烦。下面的方法简单明了:1.定义新的HeadCtrl窗口过程://///////////////////////////////////////////////////////////////////////////#ifdef HEAD_FI
2012-04-14 18:42:31
3779
原创 "基于 CDialog 的应用程序一开始便被隐藏的方法"再探
"基于 CDialog 的应用程序一开始便被隐藏的方法"再探基于 CDialog 的应用程序有时候需要一开始便隐藏窗口,如微软的DispRes例子,程序一开始就被放到托盘上,对话框本身 是不显示的。 把这个例子移植到MFC时会遇到对话框一开始便要隐藏的问题。 以前这个问题的解决方法不完善,就是对话框初始化时设置一个
2012-01-20 14:56:53
2318
原创 多线程图片下载程序的修改心得.
多线程图片下载程序的修改过程.1.在void CThreadURLDlg::OnSave()里共产生16个线程: for (int i=0; i { m_param.strPath=sFilePath+"//"+strFileName.GetAt(i); m_param.strURL=m_list.GetItemText(i,1); m_param.hwnd=this->m_hWnd;//原
2008-08-29 18:59:00
945
原创 关于CListBox和CComboBox修改窗口Style的问题
在界面编程中,经常遇到修改CListBox和CComboBox窗口式样(style)的问题.可恼的时,一旦窗口创建后(Creation),没有办法可以修改窗口式样.也就是说,ModifyStyle()和SetWindowLong()都不起作用(但调用会成功).如下面的代码:// you can not change the style of a list box dynamically,
2008-08-18 20:35:00
4337
2
原创 消息积累-CSDN问题整理,以备自己日后查询
(2008-08-02)jxcyly1985 问:我想在edit里显示变化的数据,我写了个简单的循环 while(a { a++; m_edit=a; UpdateData(FALSE); //Sleep(500); } 结果是直接出现了9,我觉得是刷新的太快了,所以加了Sleep(500);可是却是在过了5秒后还是直接显示了9,我想知道UpdateData()的工作原理,有人说是
2008-08-07 19:24:00
896
原创 窗口界面AVR反汇编工具
void CWindisavrView::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default// to simulate the LBUTTONDOWN. This will set the caret at the position
2008-08-02 15:36:00
2429
2
翻译 Lively's Getting Started Guide-Lively's入门指南
Create创建What to do first? 首先应该做什么呢?Choose a room选择一个房间From the Room List, click the title of the room youd like to visit first. 从Room列表中,单击你想要第一个访问的房间标题Use the tabs at the top of the page to sort roo
2008-07-10 14:53:00
985
原创 Windows核心编程读书笔记6-多线程编程
第6章 线程的基础知识 线程是由两个部分组成的:线程的内核对象和线程堆栈。 1. 创建和中止线程 线程用于描述进程中的运行路径,它包含独立的堆栈和CPU寄存器状态, 即线程的上下文(CONTEXT)。每当进程被初始化时,系统就要创建一个主线程, 该线程与C/C++运行期库的启动代码一道开始运行。对于许多应用程序来说,主线程是唯一需要的线程。不过,进程
2008-07-01 07:50:00
1389
原创 MFC下如何定制消息
消息定制:1) 建立消息号 #define MYMESSAGE WM_USER+106 2) 消息映射 ON_MESSAGE(MYMESSAGE, OnMyMessage)3) 消息函数定义 afx_msg void OnMyMessage(WPARAM wParam,LPARAM lParam);4) 实现消息函数 void CMainFrame::OnMyMessage
2008-07-01 07:48:00
744
1
原创 Windows核心编程-读书笔记1-3
第1章 对程序错误的处理调用Windows函数时,首先检验传递参数的有效性,如无效,或无法执行,系统返回一个值,指明该函数运行失败。Windows函数常用的返回值类型:VOID 该函数的运行不可能失败。BOOL 失败返回0,否则非0。可测试HANDLE 失败返回NULL,否则返回HANDLE。标识可操作对象注,
2008-06-26 13:03:00
978
原创 ARMulator下定时器中断测试程序
/****************************************************************************************//* NAME: test.c *//* DESC: test
2008-06-24 21:24:00
978
1
对话框里控件的透明
2013-11-12
制作弧形按钮
2017-12-01
窗口最大化时移动控件位置
2016-09-05
MM_LOENGLISH模式下使用双缓冲绘制窗口
2016-02-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人