2012-09-09 22:12
⁄ 工业·编程
⁄ 共 3838字
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)、各种跨平台应用的出现。
开源C++库必须...
开源阅读全文
2012-09-09 22:10
⁄ 工业·编程
⁄ 共 3260字
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...
消息机制阅读全文
2012-09-09 22:01
⁄ 工业·编程
⁄ 共 1847字
程序最小化后不能还原,一般原因是程序中至少存在一个Popup类型的窗口引起的,因为Popup类型的子窗口即使由于父窗口的隐藏而隐藏,其WS_VISIBLE属性仍然是可见的,当用户再次点击任务栏的程序图标时,Popup窗口会拦截系统(还原)消息,使主程序框架无法接收到系统消息,从而导致主程序无法正常还原。如果将其修改为Child类型的窗口,那么主程序的最小化和还原的功能就可以正常了。不过在实际项目中,往往就需要一个Popup类型的...
UI界面阅读全文
2012-09-09 22:00
⁄ 工业·编程
⁄ 共 4692字
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,...
CListCtrl阅读全文
2012-09-08 21:42
⁄ 工业·编程
⁄ 共 332字
// 重写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; ...
CEdit阅读全文
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...
CListBox阅读全文
2012-09-08 21:39
⁄ 工业·编程
⁄ 共 205字
将当前焦点由一个CButton转移到另外一个CButton上,可以使用WM_NEXTDLGCTL消息,可以使用下面代码将焦点移到IDCANCEL标示的Button上 .
CButton* pButton = (CButton*)GetDlgItem(IDCANCEL); SendMessage/PostMessage(WM_NEXTDLGCTL, (WPARAM)pButton->GetSafeHwnd(), TRUE);
UI界面阅读全文
2012-09-08 21:38
⁄ 工业·编程
⁄ 共 1054字
// 派生自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) ...
UI界面阅读全文
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 = ...
CListCtrl阅读全文