harib08a:
鼠標(biāo)的顯示問(wèn)題:我們可以看到,鼠標(biāo)移到窗口最右側(cè)之后就不能再移動(dòng)了,而WIN中,鼠標(biāo)是可以移動(dòng)到最右邊隱藏起來(lái)的。怎么辦?把鼠標(biāo)指針顯示的范圍擴(kuò)寬就行!我們來(lái)修改一下HariMain來(lái)解決這個(gè)問(wèn)題
//HariMain節(jié)選if (mx > binfo->scrnx - 1) { mx = binfo->scrnx - 1; }//拓寬到右邊界左邊的一個(gè)像素if (my > binfo->scrny - 1) { my = binfo->scrny - 1; }//拓寬到下邊界上方的一個(gè)像素
harib08b:
我們發(fā)現(xiàn)圖層到了畫(huà)面外,就會(huì)出現(xiàn)問(wèn)題。這里我們一起來(lái)吧sheet_refreshsub()函數(shù)進(jìn)行改進(jìn),讓它不刷新畫(huà)面以外的內(nèi)容。
方 法:在進(jìn)行畫(huà)面刷新之前,先判斷是否已經(jīng)超過(guò)了畫(huà)面以外,超過(guò)畫(huà)面外的部分不需要進(jìn)行刷新操作(下面是關(guān)鍵部分的代碼)
//sheet.c中sheet_refreshsub()節(jié)選//判斷,刷新像素的范圍是否超出了畫(huà)面if (bx0 < 0) { bx0 = 0; }if (by0 < 0) { by0 = 0; }if (bx1 > sht->bxsize) { bx1 = sht->bxsize; }if (by1 > sht->bysize) { by1 = sht->bysize; }
harib08c:
我們發(fā)現(xiàn)在圖層移動(dòng)sheet_undown()中指定ctl太麻煩,于是在這一部分對(duì)此做了一些修改,目的就是不在sheet_undown()中指定ctl.
1、struct SHEET中加入struct SHTCTL *ctl
//在圖層的結(jié)構(gòu)體定義struct SHEET中,加入圖層控制結(jié)構(gòu)體指針struct SHT