我的学习环境:winxp visual c 6.0
本来应该昨天写这东西的,遇到个问题找了好长时间,今天才解决!感觉现在学习vc有点小眉目了,找了一些小的技巧,继续努力哦,还有好多东西没有完成!路漫漫,坚持!
=============================
怎么将cstring类型转换为:lptstr
csdn上有一个这样的贴:
但我测试后只有这样好用:
cstring str;
// ... other code for get str values
// add a new node0
tvinsertstruct tvinsert;
tvinsert.hparent = null;
tvinsert.hinsertafter = null;
tvinsert.item.mask = tvif_text;
tvinsert.item.iimage = idb_snapetcl_node0 - idb_base;
tvinsert.item.iselectedimage = tvinsert.item.iimage;
tvinsert.item.psztext = str.getbuffer(str.getlength());
gettreectrl().insertitem(&tvinsert);
str.releasebuffer();
=============================
string table中的内容怎么使用:
如果你使用sdk方式编程,可以使用loadstring()函数,其中的id参数就是资源中的代码。
如果使用mfc方式编程,可以使用cstring::loadstring()函数,它的参数就是资源中的代码。
=============================
ctreectrl上添加图标:
看到这么用的:
ctreectrl& cthistree = gettreectrl();
// load bitmaps for drive types & desktop - ten images
cbitmap bitmap;
m_pimagelist = new cimagelist();
// 16x16 pixels, 8 of them
m_pimagelist->create(16, 16, true, 8, 4);
/*
#define idb_remove 200
#define idb_fixed 201
#define idb_remote 202
#define idb_cd 203
#define idb_desktop 204
#define idb_foldcls 205
#define idb_foldopen 206
#define idb_doc 207
*/
// the 8 images have conseq resource numbers
// see resource.h
for( int i = idb_remove; i <= idb_doc; i )
{
bitmap.loadbitmap( i );
m_pimagelist->add( &bitmap, (colorref)0xffffff);
bitmap.deleteobject();
}
cthistree.setimagelist( m_pimagelist, tvsil_normal );
tv_insertstruct strinsert;
// must use a selectedimage even if same
strinsert.item.mask = tvif_text |
tvif_image |
tvif_selectedimage;
// a root item - so parent is null
strinsert.hparent = null;
// index of the image in the list
strinsert.item.iimage = idb_desktop - idb_remove;
strinsert.item.iselectedimage = strinsert.item.iimage;
// force to "desktop" - the real explorer uses the
// registry-based items (like "computer")
strinsert.item.psztext = (lpstr)"desktop";
htreeitem hdesktop = cthistree.insertitem(&strinsert);
奇怪的是到我这
strinsert.item.iimage = idb_desktop - idb_remove;
strinsert.item.iselectedimage = strinsert.item.iimage;
怎么用就是不起作用,没办法用setitemimage()了。
理解了原来哪个cimagelist::create中16, 16是在资源管理中的一个个象素点;16,16就是16x16个象素的小图标了。
=========================
vc中的输入提示好就是好,用习惯了,突然不用还不知道怎么写代码了。目前发现有一点感觉不爽,如str.loadstring()的输入会自动提示:(uint nid),但是吧,按照编码规范上来说象()这个符号一般最好是成对输入的所以就以下子输入(),但结果提示就没有了。
好可惜,不懂的时候还得改变自己习惯的编码规范。
=========================
vc debug输出显示技巧:
看来自己多半会选择单步debug和trace输出(用在需要大量输出的时候比较合适)了,再就是messagebox()了。
=========================
自定义消息的实现:
自己实践了,但总出问题最后找到了,错误的把:
on_message()写成on_command()了。
发送消息为:afxgetapp()->m_pmainwnd->postmessage(wm_show_tabview_monitor, 0, 0);
注意:对某个窗口发送消息前一定要找到该窗口的句柄。同一个消息可以发送到不同的窗口,将会根据自己的设置做不同的处理。最好是子窗口可以给父窗口发送消息,父窗口可以给子窗口发送消息,但子窗口间最好不要来回发送消息。对所有窗口的句柄管理也得多注意,父窗口是可以知道所有子窗口的句柄的,但一个子窗口是比较难知道另外一个子窗口句柄的。
消息多容易搞糊涂,注意自己一定要理清顺序。
阅读(2417) | 评论(0) | 转发(0) |