whisht

    十年

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年10月16日

摘要: //窗口ID,句柄,指针三者相互转换函数//ID--HANDLE--HWND三者之间的互相转换long id;CWnd *pWnd;HWND hWnd;//id->句柄hWnd = ::GetDlgItem(hParentWnd,id);//id->指针CWnd::GetDlgItem();//句柄->idid = GetWindowLong(hWnd,GWL_ID);//句柄->指针CWnd *pWnd=CWnd::FromHandle(hWnd);//指针->IDid = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);/ 阅读全文
posted @ 2011-10-16 21:30 WHISHT 阅读(318) 评论(0) 推荐(0) 编辑

摘要: 症状从命令用户界面处理函数(Command UI handler)改变菜单状态(启用/禁用,选择/取消选择,更改文字)在由对话框处理时没有正常工作。void CTestDlg::OnUpdateFileExit(CCmdUI* pCmdUI{ pCmdUI->Enable(FALSE); //没有显示为禁用. pCmdUI->SetCheck(TRUE); // 没有文字前显示选定标记. pCmdUI->SetRadio(TRUE); // 没有在文字前显示点. pCmdUI->SetText("Close"); //没有更改菜单文字.} 原因在下拉 阅读全文
posted @ 2011-10-16 17:08 WHISHT 阅读(182) 评论(0) 推荐(0) 编辑

摘要: 项目中用到第三方提供的OCX控件用于播放视频,但VC中导入OCX控制没有鼠标双击事件,窗体OnLButtonDblClk事件,在OCX控件上无效,网上查资料可以利于重载PreTranslateMessage捕获鼠标双击事件,代码如下:BOOL CGVideoDlg::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message == WM_LBUTTONDBLCLK) { CWnd *pWnd = FromHandle(pMsg->hwnd); if (pWnd->GetDlgCtrlID 阅读全文
posted @ 2011-10-16 16:19 WHISHT 阅读(3089) 评论(0) 推荐(0) 编辑

摘要: 响应控件所在窗口的OnContextMenu(CWnd* /*pWnd*/, CPoint point)函数,在该函数中增加判断当前鼠标右击点是否在控件区域内的过程,如果判断鼠标右击点在指定控件中,则显示相应弹出菜单。这种方法实现起来简单、灵活,完整VC代码如下:void CGVideoDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint point){ // TODO: 在此处添加消息处理程序代码 CRect rect; GetDlgItem(IDC_PLAYER)->GetWindowRect(&rect); if (rect.PtInRect( 阅读全文
posted @ 2011-10-16 15:36 WHISHT 阅读(1463) 评论(0) 推荐(0) 编辑