|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
(串口)VC++的一個(gè)簡單的編譯問題,請(qǐng)幫忙 |
| 作者:風(fēng)正帆懸 欄目:單片機(jī) |
VC++的一個(gè)簡單的編譯問題,感到奇怪... 描述如下-- 說明:void InitMSCOMM(void)在文件前面聲明了。 BOOL CVcMSCommDlg::OnInitDialog() { .... InitMSCOMM();//調(diào)用初始化 .... } //--------------------------------------------------------------- //function:串口初始化 void InitMSCOMM(void) { /*設(shè)置端口,com1*/ if(m_ctrlComm.GetPortOpen()) { m_ctrlComm.SetPortOpen(FALSE); } m_ctrlComm.SetCommPort(1); .....(略) } 編譯后,錯(cuò)誤提示說m_ctrlComm相關(guān)的屬性、方法等沒有定義。 但,我把ctrlComm有關(guān)的代碼直接放到OnInitDialog()里面,就編譯通過。 我試過了其他控件,如edit控件,假如變量為m_edit1,放在自己編寫的InitMSCOMM()里面,同樣編譯錯(cuò)誤。 郁悶啊,不可能吧,這個(gè)添加函數(shù)為了讓程序整潔,是最基本的啊。怎么VC++就不給呢? 我覺得不可能的。所以問下大家,看哪里是否要求設(shè)置什么的,幫我解決一下,為什么會(huì)這樣!謝謝。 |
| 2樓: | >>參與討論 |
| 作者: 劍下亡魂 于 2006/7/3 13:47:00 發(fā)布:
void CVcMSCommDlg::InitMSCOMM(void) 是不是你函數(shù)沒定義好。 |
|
| 3樓: | >>參與討論 |
| 作者: kelan 于 2006/7/3 14:10:00 發(fā)布:
控件對(duì)象的聲明位置不對(duì)! 控件對(duì)象的聲明位置應(yīng)該放在項(xiàng)目xxxDlg類里. |
|
| 4樓: | >>參與討論 |
| 作者: 風(fēng)正帆懸 于 2006/7/4 8:38:00 發(fā)布:
樓上2位是不是誤解了? InitMSCOMM()是我自己的定義的普通函數(shù)而已,不是控件相關(guān)的函數(shù)。。。 (還是我自己誤解了?繼續(xù)請(qǐng)教) 就類似: int max(int ,int); void main() { max(a,b); //定義的普通函數(shù) } int max(int a,int b) { } |
|
| 5樓: | >>參與討論 |
| 作者: 風(fēng)正帆懸 于 2006/7/4 8:41:00 發(fā)布:
哦。。 突然明白了一點(diǎn): 因?yàn)橛孟驅(qū)砑拥目丶兞空fProtected類型的變量, 我自己定義的那個(gè)InitMSCOMM()沒有訪問權(quán)。 我試試調(diào)整一下看看 |
|
| 6樓: | >>參與討論 |
| 作者: pkballista 于 2006/7/4 9:37:00 發(fā)布:
有問題 你在一個(gè)全局函數(shù)里用某個(gè)Class的成員變量,那當(dāng)然不行了。 要么將變量定義成全局的。 要么設(shè)計(jì)成某個(gè)Class的成員函數(shù)。 |
|
| 7樓: | >>參與討論 |
| 作者: pkballista 于 2006/7/4 9:40:00 發(fā)布:
關(guān)于訪問權(quán) 關(guān)于成員函數(shù)的聲明權(quán)限。 protected:可以在本Class的子類中使用。 private:不可以進(jìn)行外部調(diào)用。 public:可以進(jìn)行外部調(diào)用。 |
|
| 8樓: | >>參與討論 |
| 作者: seahai 于 2006/7/4 12:20:00 發(fā)布:
這樣可以: 要在CVcMSCommDlg 里面定義InitMSCOMM()函數(shù)聲明, 并編寫void CVcMSCommDlg::InitMSCOMM(void)函數(shù)。 //---- class CVcMSCommDlg : public CDIALOG { // Construction public: CVcMSCommDlg(CWnd* pParent = NULL); // STANDARD constructor void InitMSCOMM(void);//添加聲明 // DIALOG Data ...略 } //新添加的成員函數(shù)實(shí)現(xiàn) void CVcMSCommDlg::InitMSCOMM(void) { /*設(shè)置端口,com1*/ if(m_ctrlComm.GetPortOpen()) { m_ctrlComm.SetPortOpen(FALSE); } m_ctrlComm.SetCommPort(1); .....(略) } 如上,測試通過 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |