我是新手。我的问题有以下:1、关于控件的问题:
我目前使用过的操作控件的方法有以下几种。一、定义控件变量,二、定义值变量(好象这个方法只能应用在能够取值的控件中,比如文本框)。三、使用GetDlgItem( Control_ID )。请问:这三种方法,各有什么优缺点。高手指点,要养成什么样的使用习惯。2、主窗体上的主菜单,由灰变可用的时候,为什么要等到鼠标移动上,字体才由灰变可用。(此问题附代码,代码如下)前提:在菜单资源中把第二个菜单属性GRAYED选中。
BOOL CMsgLogDlg::OnInitDialog()
{
……
m_pTopMenu = AfxGetMainWnd()->GetMenu(); //得到菜单
……
}void CMsgLogDlg::OnMenuNetSet()
{
nCreateSocket = m_pSocket->Create( m_pUdpInfo.m_nLocalPort, SOCK_DGRAM );
if( nCreateSocket == SOCKET_ERROR )
{
DisplayMsg( "Create UDP Socket Error" );
……
m_pTopMenu->EnableMenuItem( 1, MF_DISABLED|MF_BYPOSITION|MF_GRAYED );
bCreateUDP = FALSE;
}
else
{
DisplayMsg( "Create UDP Socket Succeed" );
……
m_pTopMenu->EnableMenuItem( 1, MF_ENABLED|MF_BYPOSITION ); //---->这里使菜单可用
……
bCreateUDP = TRUE;
}
}
调式过程中,已经跟踪到了我强调的那行(使菜单可用的行),但界面上,第二个菜单仍然为灰色,这个使用把鼠标移动到该菜单上,菜单变为可用。感觉好象是窗体刷新的问题。请赐教。
我目前使用过的操作控件的方法有以下几种。一、定义控件变量,二、定义值变量(好象这个方法只能应用在能够取值的控件中,比如文本框)。三、使用GetDlgItem( Control_ID )。请问:这三种方法,各有什么优缺点。高手指点,要养成什么样的使用习惯。2、主窗体上的主菜单,由灰变可用的时候,为什么要等到鼠标移动上,字体才由灰变可用。(此问题附代码,代码如下)前提:在菜单资源中把第二个菜单属性GRAYED选中。
BOOL CMsgLogDlg::OnInitDialog()
{
……
m_pTopMenu = AfxGetMainWnd()->GetMenu(); //得到菜单
……
}void CMsgLogDlg::OnMenuNetSet()
{
nCreateSocket = m_pSocket->Create( m_pUdpInfo.m_nLocalPort, SOCK_DGRAM );
if( nCreateSocket == SOCKET_ERROR )
{
DisplayMsg( "Create UDP Socket Error" );
……
m_pTopMenu->EnableMenuItem( 1, MF_DISABLED|MF_BYPOSITION|MF_GRAYED );
bCreateUDP = FALSE;
}
else
{
DisplayMsg( "Create UDP Socket Succeed" );
……
m_pTopMenu->EnableMenuItem( 1, MF_ENABLED|MF_BYPOSITION ); //---->这里使菜单可用
……
bCreateUDP = TRUE;
}
}
调式过程中,已经跟踪到了我强调的那行(使菜单可用的行),但界面上,第二个菜单仍然为灰色,这个使用把鼠标移动到该菜单上,菜单变为可用。感觉好象是窗体刷新的问题。请赐教。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货