现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2012-09-09 22:12 工业·编程 ⁄ 共 3838字 暂无评论
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)、各种跨平台应用的出现。 开源C++库必须...
阅读全文
WINDOWS中进程间通讯的方式很多,如:消息机制,共享内存机制,SOCKET,COM,RPC等等, 需要时可以根据具体情况来选择使用的方式。 我在这本文中仅介绍进程间的自定义消息通讯机制。 1,WINDOWS中自定义消息的定义和使用; 在WNDOWS中消息分系统消息和自定义消息。 系统消息定义从0到0x3FF,使用0x400到0x7FFF定义自己的消息。 Windows把0x400定义为WM_USER。如果想定义自己的一个消息,可以在WM_USER上加上 ...
阅读全文
2012-09-09 22:05 工业·编程 ⁄ 共 829字 暂无评论
  1. 代码控制tab切换 m_tab.SetCurSel(1); NMHDR h; h.code = TCN_SELCHANGE; h.idFrom = IDC_TABCTRL; h.hwndFrom = m_tab.m_hWnd; // tab控件的句柄 ::SendMessage(m_hWnd, WM_NOTIFY, (WPARAM)IDC_TABCTRL, (LPARAM)&h); // m_hWnd为包含tab控件的对话框 2. treectrl选项切换 NMTREEVIEW tv; memset((void*)&tv,0,sizeof(tv));  tv.hdr.hwndFrom = m_hWnd;  tv.hdr.idFrom = ::GetCl...
阅读全文
程序最小化后不能还原,一般原因是程序中至少存在一个Popup类型的窗口引起的,因为Popup类型的子窗口即使由于父窗口的隐藏而隐藏,其WS_VISIBLE属性仍然是可见的,当用户再次点击任务栏的程序图标时,Popup窗口会拦截系统(还原)消息,使主程序框架无法接收到系统消息,从而导致主程序无法正常还原。如果将其修改为Child类型的窗口,那么主程序的最小化和还原的功能就可以正常了。不过在实际项目中,往往就需要一个Popup类型的...
阅读全文
2012-09-09 22:00 工业·编程 ⁄ 共 4692字 评论 1 条
1。要重绘listctrl表头,则listctrl表现选择为report风格 2。其表头(CHeaderCtrl)可以通过GetHeaderCtrl获取 3。继承CHeaderCtrl类,重绘表头。      有两种方式重绘:      a。重载OnPaint方法,事例代码如下: void CSkinHeaderCtrl::OnPaint() { TRACE("CSkinHeaderCtrl::OnPaint()/n"); CPaintDC dc(this); // device context for painting CRect rect,...
阅读全文
// 重写CEdit类,处理WM_LBUTTONDBLCLK消息 void CNewEdit::OnLButtonDblClk(UINT nFlags, CPoint point) {     // TODO: Add your message handler code here and/or call default         CEdit::OnLButtonDblClk(nFlags, point);     int start = LineIndex(HIWORD(CharFromPos(point)));     int end = -1;   ...
阅读全文
2012-09-08 21:40 工业·编程 ⁄ 共 2234字 暂无评论
// 重写DrawItem虚函数 void CNewListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { // TODO: Add your code to draw the specified item ASSERT(lpDrawItemStruct->CtlType == ODT_LISTBOX); LPCTSTR lpszText = (LPCTSTR) lpDrawItemStruct->itemData; ASSERT(lpszText != NULL); CDC dc;   dc.Attach(lpDrawItemStruct->hDC);   // Save these value to restor...
阅读全文
将当前焦点由一个CButton转移到另外一个CButton上,可以使用WM_NEXTDLGCTL消息,可以使用下面代码将焦点移到IDCANCEL标示的Button上 . CButton* pButton = (CButton*)GetDlgItem(IDCANCEL); SendMessage/PostMessage(WM_NEXTDLGCTL, (WPARAM)pButton->GetSafeHwnd(), TRUE);
阅读全文
// 派生自CButton类,主要过滤WM_LBUTTONDOWN 、WM_LBUTTONUP和WM_MOUSEMOVE消息。 BOOL m_bFlag = FALSE; // 成员变量,用来标示鼠标是否按下, 初始化为FALSE CPoint m_pt; // 成员变量,用来保存当前坐标值 BOOL CXXButton::PreTranslateMessage(MSG* pMsg) {     // TODO: Add your specialized code here and/or call the base class     switch(pMsg->message)  ...
阅读全文
2012-09-08 21:35 工业·编程 ⁄ 共 2227字 暂无评论
//自绘CListCtrl类,重载虚函数DrawItem void CNewListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { // TODO: Add your code to draw the specified item ASSERT(lpDrawItemStruct->CtlType == ODT_LISTVIEW); CDC dc; dc.Attach(lpDrawItemStruct->hDC); ASSERT(NULL != dc.GetSafeHdc()); // Save these value to restore them when done drawing. COLORREF crOldTextColor = ...
阅读全文