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