• 17

中文RSS新聞閱讀程式(上)

大大你好 跟你分享我的心得
針對

1. 使用上下左右鍵捲動新聞
- VB設定硬體按鍵功能無效
- 新聞顯示(文字盒)無捲動功能
- 自己寫可捲動的文字盒元件, 在PC版中可工作, 在PDA中不能使用

我所知道 硬體按鍵功能 是有效的
只是 這個事件的訊息 是傳給Form 所以需要轉發這些事件給 內部的控制項
你可以試看看這樣是否可以取得訊息

不知道 是不是我的想法是否錯誤
希望這個資訊 對你的程式也有幫助^^ 加油 大大

Nomad Libra wrote:
針對

1. 使用上下左右鍵捲動新聞
- VB設定硬體按鍵功能無效
- 新聞顯示(文字盒)無捲動功能
- 自己寫可捲動的文字盒元件, 在PC版中可工作, 在PDA中不能使用

我所知道 硬體按鍵功能 是有效的
只是 這個事件的訊息 是傳給Form 所以需要轉發這些事件給 內部的控制項
你可以試看看這樣是否可以取得訊息

不知道 是不是我的想法是否錯誤
希望這個資訊 對你的程式也有幫助^^ 加油 大大


即使可以取得事件, 讓文字捲動仍然是個問題, 看來文字捲動一定要User操作Scroll Bar才行, 不能用程式控制去捲動.

唉, 想到VB.Net這麼多的問題, 就沒有勇氣寫下去了, 如果您有興趣寫, 小弟把原始碼傳給您, 請您幫忙寫可好?!
推!推!推! 一定要推!
謝謝樓主提供
首先 先跟大大說聲 抱歉 我對 VB這個語言一竅不通
所以我才會用 C#再寫一次 所以 感謝你的美意要我幫忙擴充呢

還有 其實這個問題也不是 VB的問題 而是 .NET CF 2.0 現在的功能還太少
還不能跟 .NET F 2.0 比 不管 VB C# 或是 J#都有這些限制啦
其實 也可以用MFC來寫這個程式 只不過 要多花點時間啦
目前我想用 .NET CF 2.0 去控制 ActiveSync 也是沒有函數可用
到頭來還是要去call C/C++ 的 SDK 我想 這是無可避免的 畢竟 .NET 才 2.0

我有測試過TextBox這個控制項
的確不能控制捲軸 不過 有幾個方法也許可以試試

第一
TextBox 繼承至 TextBoxBase
而TextBoxBase有一個屬性為 int TextBoxBase.SelectionStart
他可以控制選擇的起始位置
而你可以使用 void TextBoxBase.ScrollToCaret() 這個函數來控制捲軸
所以 只要接收的到 按鍵訊息 利用這個訊息來控制 TextBoxBase.SelectionStart
應該是可以捲動 只不過 要算單行有多少位移 還挺囉嗦的.

第二
其實TextBox 本身就會接受按鍵訊息來捲動 不過 TextBox 要為 Focus
所以 你可以嘗試設定Focus至TextBox 讓他可以動作

目前 我想到的只有這幾個作法 希望對大大有幫助呢

Nomad Libra wrote:
第一
TextBox 繼承至 TextBoxBase
而TextBoxBase有一個屬性為 int TextBoxBase.SelectionStart
他可以控制選擇的起始位置
而你可以使用 void TextBoxBase.ScrollToCaret() 這個函數來控制捲軸
所以 只要接收的到 按鍵訊息 利用這個訊息來控制 TextBoxBase.SelectionStart
應該是可以捲動 只不過 要算單行有多少位移 還挺囉嗦的.

第二
其實TextBox 本身就會接受按鍵訊息來捲動 不過 TextBox 要為 Focus
所以 你可以嘗試設定Focus至TextBox 讓他可以動作

目前 我想到的只有這幾個作法 希望對大大有幫助呢


TextBox在VB.Net中就有您說的那兩個屬性, 若是要捲到第一頁或最後一頁可用這兩個函數, 但若是要下捲一行....就得先算出每一頁的行數, 如您所說, 可用TextBox高度除以每行高度即可, 我在PC版上己測試成功, 但是PDA中, 竟然算不出每行高度(MeasureString函數), 媽的%*#@&

若外, TextBox即使Focus, 也不能接受按鍵操作, 這一定得自己寫才成.
Jimmy_Sung 兄:
新聞標題的確是無法用上下鍵或是4向鍵來上下選擇,但是在瀏覽新聞內容時,只要將觸控筆或是手指在內容上點一下,就會有游標出現,此時使用上下鍵或是4向鍵即可使游標移動,當游標跑到PDA畫面最後一行時,再壓往下鍵就會捲動新聞畫面,小弟就是這樣看新聞的,請參考。
taylor大大所提的
就是將 Focus 以人工的方式 定在 TextBox的狀況
我之前測試 TextBox是可以上下左右鍵捲動 但是 不能自己定義按鍵
我想到的第三個方法
就是使用 System.Windows.Forms.VScrollBar 與 GDI 自己控制版面
這樣可以接 按鍵事件 來控制
這樣比較辛苦 不過 如果只是唯讀的方式操作 那還不算太困難
加油 Jimmy_Sung 大大

Nomad Libra wrote:
taylor大大所提的
就是將 Focus 以人工的方式 定在 TextBox的狀況
我之前測試 TextBox是可以上下左右鍵捲動 但是 不能自己定義按鍵
我想到的第三個方法
就是使用 System.Windows.Forms.VScrollBar 與 GDI 自己控制版面
這樣可以接 按鍵事件 來控制
這樣比較辛苦 不過 如果只是唯讀的方式操作 那還不算太困難
加油 Jimmy_Sung 大大


試過了, 問題前面說過, 無法算出新聞的行數, 所以也無法做出上捲或下捲的功能..
我有嚐試過 大大所說的狀況
我自己設計的 控制項 繼承至 Control
利用 System.Drawing.Graphics graphics = this.CreateGraphics();
去得 System.Drawing.Graphics 物件 且 該物件的 MeasureString 是可以正常計算的
我有傾印過計算的數值 是可以正常的計算 高度 跟 寬度
所以我想 捲動的設計 應該沒有問題
希望對大大的程式有幫助

Nomad Libra wrote:
我有嚐試過 大大所說的狀況
我自己設計的 控制項 繼承至 Control
利用 System.Drawing.Graphics graphics = this.CreateGraphics();
去得 System.Drawing.Graphics 物件 且 該物件的 MeasureString 是可以正常計算的
我有傾印過計算的數值 是可以正常的計算 高度 跟 寬度
所以我想 捲動的設計 應該沒有問題
希望對大大的程式有幫助


PC上沒問題, 但是在PDA上, Measurestring卻無法計算, 另外還要考慮自動換行(不能使用CRLF來算行數).

Nomad大是否願意把原始碼Share出來, 造福大家. 小弟有公佈原始碼, 若您不嫌棄, 小弟願奉上最新程式碼, 請您改一版能用方向鍵控制新聞捲動的版本出來, 小弟對老是要用觸控筆實在也是很煩了.

敬請惠予協助, 萬分感謝

  • 17
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 17)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?