基于mscomm控件,打开串口有关问题

基于mscomm控件,打开串口问题
请高手指点很郁闷个问题 我在对话框上有一个按钮这个按钮就是负责打开和关闭串口的,响应函数为:OnButton1();代码如下:
C/C++ code

void CExampleDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    if (!serial_port.GetPortOpen())//
    {
        serial_port.SetPortOpen(TRUE);
        serial_port.SetCommPort(1);
}
    else if(serial_port.GetPortOpen())//
    {
        serial_port.SetPortOpen(FALSE);
        MessageBox(_T("串口已关闭"));
    }
    else
    {
        MessageBox(_T("cannot open serial port"));
    }
    serial_port.SetCommPort(1);
    serial_port.SetOutBufferSize(1024);
    serial_port.SetInputMode(1);
    serial_port.SetSettings("9600,n,8,1");

}


我想实现的是我点一下这个按钮就开,在点就关,再点就开这样的...并且端口是可选的(CommPort属性可选),现在问题让我纳闷的是,我各种试怎么也达不到我的要求。我电脑上只有一个COM1口,我把serial_port.SetCommPort();设为其他的口只要我重新打开对话框点打开按钮他也能打开我很郁闷。根本没有这个端口他是怎么打开的我就想问。
请高手指点或谁用它做过这个给我个小例子 谢谢!网上是很多但都是端口固定的,不是可选的。(我就想实现的是用这个按钮实现他的开和关,并且端口是可选的)

------解决方案--------------------
调换下顺序
serial_port.SetCommPort(nCom);
serial_port.SetPortOpen(TRUE);