博文

CListCtrl使用技巧[转](2006-10-09 11:55:00)

摘要:CListCtrl使用技巧[转]关键词: CListCtrl                                           以下未经说明,listctrl默认view 风格为report
1. CListCtrl 风格       LVS_ICON: 为每个item显示大图标
      LVS_SMALLICON: 为每个item显示小图标
      LVS_LIST: 显示一列带有小图标的item
      LVS_REPORT: 显示item详细资料       直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”
2. 设置listctrl 风格及扩展风格       LONG lStyle;
      lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口style
      lStyle &= ~LVS_TYPEMASK; //清除显示方式位
      lStyle |= LVS_REPORT; //设置style
      SetWindowLong(m_......

阅读全文(213) | 评论:0

VC技术点滴-1(2006-10-09 11:42:00)

摘要:VC技术-1                       全局函数AfxGetApp()返回是一个指向应用程序对象的指针。借助于这个指针,我们可以得到CWinApp类的公共数据成员(m_wndToolBar,m_pMainWnd等)和接口 工具栏对象,状态栏对象以及菜单对象对是主框架窗口相联系的,而不是和视图窗口相联系的。所以对于视图窗口来说,要想得到工具栏对象,必须先得到主框架窗口对象,然后再根据主框架窗口对象得到工具栏对象:
CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CToolBar* pToolBar = &pFrame->m_wndToolBar;
我们必须把m_pMainWnd从CFrameWnd*转换到CMainFrame*,因为m_wndToolBar是派生类的成员。我们还必须使 m_wndToolBar为公有成员或我们的类成为CMainFrame的友元。 我们还可以利用同样的方法来得到菜单对象、状态栏对象和对话框对象。 InvalidateRect()指定需要刷新的区域(局部刷新) 菜单和工具栏更新命令常用函数
CCmdUI* pCmdUI;
pCmdUI->SetCheck(TRUE);//勾选/复选
pCmdUI->Enable(False);//不可用(灰化) 操作状态栏常用函数 SetPaneText() 例子:
CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CStatusBar* pStatusBar = &pFrame->m_wndStatusBar;
pStatusBar->SetPaneText(0,"message line for first pane");
CString 与字符串数组之间的转换 char szMessage......

阅读全文(3728) | 评论:0

在32位程序中如何实现进程间通讯  (2006-10-09 11:40:00)

摘要:在32位程序中如何实现进程间通讯                           转自http://www.csdn.com.cn 1、引言

在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同在WIN16中对本地进程进行读写操作一样。

典型的WIN16两进程可以通过共享内存来进行数据交换:(1)进程A将GlobalAlloc(GMEM_SHARE...)API分配一定长度的内存;(2)进程A将GlobalAlloc函数返回的句柄传递给进程B(通过一个登录消息);(3)进程B对这个句柄调用GlobalLock函数,并利用GlobalLock函数返回的指针访问数据。这种方法在WIN32中可能失败,这是因为GlobalLock函数返回指向的是进程A的内存,由于进程使用的是虚拟地址而非实际物理地址,因此这一指针仅与A进程有关,而于B进程无关。

本文探讨了几种WIN32下进程之间通讯的几种实现方法,读者可以使用不同的方法以达到程序运行高效可靠的目的。

2、Windows95中进程的内存空间管理

WIN32进程间通讯与Windows95的内存管理有密切关系,理解Windows95的内存管理对我们如下的程序设计将会有很大的帮助,下面我们讨论以下Windows95中进程的内存空间管理。

在WIN16下,所有Windows应用程序共享单一地址,任何进程都能够对这一空间中属于共享单一的地址空间,任何进程都能够对这一空间中属于其他进程的内存进行读写操作,甚至可以存取操作系统本身的数据,这样就可能破坏其他程序的数据段代码。

在WIN32下,每个进程都有自己的地址空间,一个WIN32进程不能存取另一个地址的私有数据,两个进程可以用具有相同值的指针寻址,但所读写的只是它们各自的......

阅读全文(2005) | 评论:0