mfc-请教一下VC++MFC一段代码的意思

问题描述

请教一下VC++MFC一段代码的意思

在鼠标右键菜单ONCONTEXTMENU函数里面,有这么一段
CMenu menu;
VERIFY(menu.LoadMenu(CG_IDR_POPUP_TYPING_TEST_VIEW));

CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = this;

while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,pWndPopupOwner);
}
请问下这个WHILE循环有必要吗?不写WHILE循环可以吗?

解决方案

如果你的菜单只有两层,那没什么必要,如果有多层,需要循环才能找到顶层的菜单项。

解决方案二:

while循环是为了不停地往上一直找到最上面一层父窗口。直到它没有child属性。所以有必要

时间: 2024-08-29 11:35:32

mfc-请教一下VC++MFC一段代码的意思的相关文章

上海:急招vc/mfc, c#, vb.net 开发以及软件测试人员,待遇优厚

问题描述 招一个VB.Net开发工程师:1.精通VB.Net.ASP.Net.SQLServer,具有二年以上的实际开发工作经验.2.计算机或相关专业大学本科以上学历,会日语者优先.3.年龄35岁以下.4.地点:上海浦东5.薪资:5K-8K有意者请发简历到peter@51tiaocao.com找8个有VC/MFC开发经验的VC/MFC开发工程师若干1,一年以上VC++开发的实际工作经验,MFC开发经验者优先.2,计算机或相关专业大学本科以上学历.3,会日语者优先.4,工作地点:上海浦东5,薪资:

mfc-菜鸟虚心请教,关于MFC的,我应该补充什么那些函数代码呢?

问题描述 菜鸟虚心请教,关于MFC的,我应该补充什么那些函数代码呢? 50C void CSwitchDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(nIDEvent==1){ m_listBoxMac.ResetContent(); for(int m=0;m<4;m++) { CString strAdd1; if(Mac[m].dk!=0&&

框架-滑动窗口协议模拟用vc++/mfc做的,其中代码缺少.rc文件不能在vc++6.0上运行!!怎么补

问题描述 滑动窗口协议模拟用vc++/mfc做的,其中代码缺少.rc文件不能在vc++6.0上运行!!怎么补 求教!! // Sender.cpp : Defines the class behaviors for the application. #include "stdafx.h" #include "Sender.h" #include "SenderDlg.h" #ifdef DEBUG #define new DEBUG_NEW #u

access数据库-VC++ mfc连接odbc数据库后,不能对数据库的记录更新(增删改),只能查寻是什么原因?

问题描述 VC++ mfc连接odbc数据库后,不能对数据库的记录更新(增删改),只能查寻是什么原因? 下面是一段插入的代码,不能插入,在第二个str.Format()时出现FROM子句出错. 我在执行查询时是成功的. void CINPUT::OnTianjia() { // TODO: Add your control notification handler code here UpdateData(TRUE); if(m_No.IsEmpty() || m_name.IsEmpty()

VC/MFC中如何自定义消息

定义一个自定义消息号:const UINT WM_MYMESSAGE = WM_USER + n; // 自定义消息一般大于WM_USER,然后就可以为该消息添加映射了. afx_msg LRESULT OnMyMessage ( WPARAM wParam, LPARAM lParam ); ON_MESSAGE ( WM_MYMESSAGE, OnMyMessage ) LRESULT cxx::OnMyMessage ( WPARAM wParma, LPARAM lParam ) { .

vc++ mfc 剪贴板操作教程

本文主要介绍了VC++/MFC中如下内容的剪贴板操作: 1.文本内容的操作 2.WMF数据的操作 3.位图的操作 4.设置使用自定义格式 5.感知剪贴板内容的改变 6.自动将数据粘贴到另一应用程序窗口 一.文本内容的操作 下面的代码示范了如何将文本内容复制到剪贴板(Unicode编码的先转化为ASCII): CString source; //文本内容保存在source变量中 if( OpenClipboard() ) { HGLOBAL clipbuffer; char * buffer; E

事件 位图-VC/MFC 基于对话框程序,在主界面上左侧有五副位图,单击位图1覆盖原主界面,显示一个另一个界面

问题描述 VC/MFC 基于对话框程序,在主界面上左侧有五副位图,单击位图1覆盖原主界面,显示一个另一个界面 2C VC/MFC 基于对话框程序,在主界面上左侧有五副位图,单击位图1覆盖原主界面,显示自定义1的界面,同理单击位图2显示自定义2的界面,用代码如何实现,请各位指教.

学习VC MFC开发必须了解的常用宏和指令

1.#include指令  包含指定的文件   2.#define指令   预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些"表面似和善.背后一长串"的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了 3.#typedef指令 常用来定义一个标识符及关键字的别名它是语言编译过程的一部分,但它并不实际分配内存空间. 4.#ifndef   #else   #endif指令  条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分

vc++-VC++MFC工程做自适应中值滤波

问题描述 VC++MFC工程做自适应中值滤波 求完整的自适应中值滤波程序,要求有源程序,可执行程序.之前在网上找的都不太好模仿,希望直接在view里做,不要各种引申函数,就在一个大括号里做完的.拜托拜托!!急啊! 解决方案 恕我直言题主,您的第二张图片中的代码完全看不清楚 解决方案二: CXXXXXDoc* pDoc = GetDocument(); int iH,iW; LPSTR lpDIB; LPSTR lpDIBBits; lpDIB = (LPSTR) ::GlobalLock((HG