在编辑框中,我想使用setcaretpos把当前光标后移几个字符,
好像参数point和象素相关,如何转化字符数为point呢?
好像参数point和象素相关,如何转化字符数为point呢?
解决方案 »
- 打开串口时提示“一未命名文件中包含无效的路径”是怎么回事?
- VC中如何强制让窗口重绘,主要是在响应OnMove时让窗口重绘
- MFC工程无法new一个单位
- 怎样在Win7任务栏中添加自定义菜单项啊??
- dll开发.h文件的问题
- Window SDK编程中,怎么样建立多个窗口,并独立处理每个窗口上的消息。
- VC++的打开对话框中的文件类型可以有多种,这是怎么实现的?
- 调查,现在用win32 sdk写程序的人多不多,如果您是用sdk写程序,能否说一下主要是做哪些方面的?
- 学习windows C编程时,对话框显示不出来
- VC++的DCOM是怎样实现呀!
- 哪位高手知道setcaretpos的用法
- 书上说,线程分为工作者线程与 UI 线程. 工作者线程见得多了. 但, 怎样编写一个 UI 线程信相应的执行函数 ?
首先用
TEXTMETRIC tm;
GetTextMetrics(hdc,&tm);
获得字体的尺寸
int cxChar=tm.tmAveCharWidth;
POINT pt;
GetCaretPos(&pt);
int iSpace=10;
SetCaretPos(pt.x+10*cxChar,pt.y);//后移10个字符
-----------------------------
当然了最好考虑能否到达下一行,如果已经换行则需要另外处理
如果是edit控件就不需要考虑了
------------------------------
<windows programming>charles petzold写的
讲得很清楚
否则比较麻烦
-----------------
HDC hdc=GetDC(this->m_hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
看来你没有看明白,这里详细说一下,
设你的EDIT为m_edit,m_edit.SetWindowText("safsdgdfg");
m_edit.SetFocus();
CPoint pt = m_edit.PosFromChar(4);//假设要放在第四个那里
m_edit.SetCaretPos(pt);或使用
m_edit.SetWindowText("safsdgdfg");
m_edit.SetFocus();
m_edit.SetSel(4,4); 如果你是用在OnInitDialog()中,那么你把最后面那个
return TRUE;改为
return FALSE;