miniGui開發進展解決

2021-05-22 17:51:01 字數 4054 閱讀 1632

1.minigui中,可以在編譯配置選項中設定ui風格。改為flat後,編譯示例報錯。說是mydrawbutton沒有定義。後來看了原始碼,才解決。原來定義flat時,還有個_gray_screen巨集開關,決定是否定義mydrawbutton.

還是要多看原始碼來解決問題呀。

2.對話方塊程式,更改背景色。在執行時配置檔案minigui.cfg中。

3.編譯除錯命令。

qvfb -width 640 -height 480&

gcc -o dialogbox dialogbox.c -lpthread -lminigui -ljpeg -lpng  -g

gdb ./dialogbox

對於core dump錯誤,如何除錯?如何生成core檔案?

4.20100608今天除錯成功選單,原來trackpopmenu要放在insertmenu之後才起效果,包括stripmenu也要在insert之後。

選單成功建立了,但還是有些疑問的,選單的資源釋放是什麼做的?

5.20100609今天建立子對話方塊成功,但中文顯示亂碼。後來查明是該.c原始碼檔案,儲存方式為utf—8.解決:另存檔案,選用gb2312就可以了。(linux預設是utf-8編碼方式,gedit可以另存,vim暫不知如何解決)

**:vim語言設定,煩啊,編碼可能一直是作業系統要處理的乙個麻煩問題.

我的linux上有不少的gb2312 的檔案.沒法子,只有讓vim也支援他啦。

如果你的系統你自己的主目錄中有.vimrc就加入下面二行,如果沒有,就建乙個這個檔案.

let &termencoding=&encoding

set fileencodings=utf-8,gbk,ucs-bom,cp936

記的儲存哦.然後在用vim開啟看看,utf8和gb2312都沒有問題.

ldd -v 程式名檢視程式使用的png的lib庫版本。

機器中有二個版本的png的lib庫,衝突。想法解決掉乙個。

6.core dump. 幾則

gdb使用技巧

gdb的功能強大,與帶

gui的偵錯程式相比有過之而無不及,使用也就相對複雜一些。一方面是它的親和力稍差,畢竟是給程式設計師用的,不用做得傻瓜化。另外一方面它的命令太多,我們常常淺嘗輒止,只記得幾個常用的命令就知足了,沒有充分發揮它的潛力。今天要除錯一段

arm彙編**,按常規方法除錯彙編**非常麻煩,花了點時間看

gdb的幫助,發現幾個技巧比較有用,這裡做個筆記。 1.

使用自定義命令。

gdb內建的命令很多,這些命令都遵循

unix

的一貫原則,每個命令都只有乙個基本功能。命令的粒度比較細,可重用性會更高。自己要去組織這些基本命令,以形成功能更強大的命令。這可以用

define

來實現,如:

(gdb) define nid           

type commands for definition of "nid".

end with a line saying just "end".

>ni

>disassemble $pc $pc+16

>end 2.

多視窗。

gui偵錯程式可以同時開啟多個小視窗,分別顯示暫存器、彙編和源**等。在

gdb裡也可以做到,但同時最多只能顯示兩個視窗,試了一下也很方便的。基本命令如下:

a)`layout src'

僅顯示源**視窗。

b)`layout asm'

僅顯示彙編**視窗。

c)`layout split'

顯示源**和彙編**視窗。

d)`layout regs'

顯示暫存器和源**視窗,或者暫存器和彙編**視窗。

e)`layout next`

和`layout prev'

切換視窗。

f)ctrl + l

重新整理螢幕。

g)`c-x 1'

單視窗模式。

h)`c-x 2'

雙視窗模式。

i)`c-x a'

回到傳統模式。

~~end~~

7.combox的顏色設定問題。

在對話方塊中,想要將對話方塊中的控制項背景色設為對話方塊的背景色,以達到透明的感覺。其它視窗,通過getdlgitem獲取控制代碼,直接設定背景色即可。

但combox卻只能設定到按鈕底部的背景色。google後,得知,要分別獲取到combox的edit,listbox再設定背景色才可。

另外,獲取edit,listbox的控制代碼,需要傳送訊息cb_getchildren來得到。最後,下拉按鈕仍有一部分未設定成背景色,之後再想法解決吧。

搞了半天 看了一下源**才明白   這是comboboxctrlproc函式中的    

case cb_getchildren:

wparam引數就是combobox子控制項edit的控制代碼

ebsoft 發表於: 2009/04/07 01:41pm

我也在做這個 請幫忙說一下具體的方法

多謝 

twodiamond 發表於: 2009/04/02 08:45pm

壇主,請教:如果不顯式採用訊息機制,是否可以通過下面的呼叫獲得編輯框的控制代碼:

hcombobox=createwindowex( ctrl_combobox,

"",ws_child | ws_visible | ws_tabstop | cbs_spinlist | cbs_notify,//istyle

0,   //iexstyle

id,x, y, w, h,

hparent,

adddata);

pdata = (pcomboboxdata)getwindowadditionaldata2(hcombobox);

hedit  = pdata->editcontrol;

即通過 getwindowadditionaldata2 來獲得視窗hcombobox的第2個附加資料,從源**上看,第2個附加資料就是控制項的位址,根據這個位址來索引編輯框的控制代碼;

多謝!kongming 發表於: 2009/04/02 07:20pm

向組合框控制項傳送 cb_getchildren 訊息。 

twodiamond 發表於: 2009/04/02 06:02pm

多謝指點,請問哪個函式能獲得編輯框子控制項的控制代碼,多謝版主!

kongming 發表於: 2009/04/02 05:52pm

組合框中的編輯框是它的子控制項,你應該拿到編輯框的控制代碼然後再設定編輯框的背景色。 

8.c++初始化機制帶來的minigui呼叫問題。

近期同事幫我重做minigui下的控制項。由於我這邊要用c++,所以在改到c++時,發現要麼處理有問題,要麼就是程式出錯。

看過原來的**後,才發現,在控制項獲取原基礎控制項的視窗處理過程時,需要額外設定opmask值。這一點,在minigui的示例**中,也未使用,可能它沒有考慮c++的情況吧。c++的初始化會導致opmask未設定,從而得不到想要的結果,甚至得到危險的操作結果。

而c中初始化,則沒有這個問題。

9.**整潔與邏輯(其實是相關的)

在使用控制項的過程中,發現控制項中的get_text處理有問題,其中的strlen函式會出錯。

跟了下,發現操作的指標資料和預想的不是乙個。這個指標是通過獲取附加資料得到的,沒有太仔細追控制項裡面的**了。**的書寫果然很重要。之前看裡面的**,就擔心會有這樣的問題。目前暫時給她改了下,重新獲取了附加資料。

10.介面函式指標型別(void*)[型別不安全,呼叫時不作檢查。。。。]

呼叫另乙個同事的運算元據庫的介面時,會導致函式其它變數值改變。最後找到原因。因為我呼叫的指標和他庫里操作的指標不是乙個型別。而它介面函式又全部用(void*)轉換了,所以這個過程中,如果上層不仔細檢查,編譯是不會檢查出問題的。而執行時,卻悄悄的影響了其它地方的記憶體。

仔細想想,這種(void*)的方式,如果是os的api的話,恐怕也是可以做點文章,讓程式崩潰還是可以的吧。

由此也得出,介面函式裡的指標型別,說型別安全還是有意義的。

前端開發程序

前端開發過程經歷了 前後端不分離 前後端半分離 前後端完全分離 三個階段。前後端不分離 在早期的時候前後端是不分離的開發模式,前端只負責書寫靜態頁面以及一些樣式,渲染真實資料的時候是在伺服器端進行頁面的拼裝,然後返回給客戶端渲染資料,在前後端不分離開發的時代前後端是屬於高度耦合的.如下圖 前後端半分...

開發進度月報

開發中的軟體系統的名稱和識別符號 分專案名稱和識別符號 分專案負責人簽名 本期月報編寫人簽名 本期月報的編號及所報告的年月 列出本月內進行的各項主要活動,並且說明本月內遇到的重要事件,這裡所說的重要事件是指乙個開發階段 即軟體生存週期內各個階段中的某乙個,例如需求分析階段 的開始或結束,要說明階段名...

iOS開發進製轉換

十進位制轉換為二進位制 param decimal 十進位制數 return 二進位制數 nsstring getbinarybydecimal nsinteger decimal decimal decimal 2 if binary.length 4 0 return binary 將十進位制轉...