2010年2月25日 星期四

combo box控件的使用

combo box控件的使用
1.你在編輯狀態下點那個控件的向下的三角形,就出冒出來一個可以調高度的東東。將高度調高,否則在執行時會不能顯示下拉選項。
2.為combo box添加選項,在編輯狀態下選combo box控件的屬性,選Data標籤,在編輯框中添加選項,按Ctrl-Enter來添加下一個選項。
3.為combo box添加變量
combo box有兩個變量,CComboBox類變量和CString變量。
CComboBox變量用來設置combo box的屬性,一般在cdialog類中的oninitdialog()函數中使用。添加方法是在classwizard中添加變量,添加時 Category中選Control。例如:CComboBox.SetCurSel(0)用來設置下拉菜單初始值,具體看MSDN。   
CString變量用來存儲下拉菜單所選的選項值。同樣,當選項發生變化時要使用UpdateData(TRUE)函數更新該變量的值。


-----------------------------------------------------------------------------------------------------------------------------------
一、初始化Combo Box控件
(1)在資源視圖中,選擇控件的"Properties",然後在Data選項卡里為控件添加初始化數據,換行是按Ctrl+Enter,然後,再修改Style選項卡里的Type屬性為Drop List。
(2)在程序初始化時動態添加
CString strTemp;
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除ID為IDC_COMBO_CF現有所有內容
for(int i=1;i<=100;i++)
{
   strTemp.Format("%d",i);
   ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp); //為控件添加初始化數據
}
(3)刪除
DeleteString( UINT nIndex )//刪除指定行,
(4)插入
InsertString( int nIndex, LPCTSTR lpszItem )//將行插入到指定位置
(5)查找
FindString( int nStartAfter, LPCTSTR lpszItem )//可以在當前所有行中查找指定的字符傳的位置,nStartAfter指明從那一行開始進行查找。
int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以選中包含指定字符串的行
二、如何控制Combo Box的下拉長度
1,首先要知道兩點:一、那就是在設計界面裡,點擊一下Combo Box的下拉箭頭,此時出現的調整框就是Combo Box的下拉調整框。
2,二、屬性裡有個 No integral height 鉤選項,表示最大長度為設計長度,如果實際內容比設計長度多,就出現滾動條,少就以實際長度顯示。
三、選擇其中的某行
(1)選中:
int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//當前選中的行。
(2)設置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//設置第n行內容為顯示的內容。
四、取得Combo Box框內容
(1)取當前內容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);//將獲取的值存放到CString類型變量strTemp中。
如果定義了關聯的變量,例如m_combo,可以直接獲取:m_combo->GetWindowText(strTemp);

(2)取其他行內容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp); //其中n為從0開始的索引值
五、獲取當前選擇的行數
例如:((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel()返回的是當前選中值的行數,是整型。
或者:UINT m_row = m_combo->GetCurSel()
六、獲得焦點
通常要判斷控件是否獲得了焦點,可以用GetFocus()函數
例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判斷焦點是否在編輯框IDC_EDIT_VALUE2內。
但是combobox 的焦點不同,因為它是由edit和listbox兩部分組成的
所以獲得焦點要用GetParent():if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))
-----------------------------------------------------------------------------------------------------------------------------------
一、如何添加/刪除Combo Box內容
1,在Combo Box控件屬性的Data標籤裡面添加,一行表示Combo Box下拉列表中的一行。換行用ctrl+回車。
2,在程序初始化時動態添加
如: //控件內容初始化
CString strTemp;
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除現有所有內容
for(int i=1;i<=100;i++)
{
   strTemp.Format("%d",i);
   ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
}
3,下拉的時候添加
如: CString strTemp;
int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得目前已經有的行數
if(iCount<1)//防止重複多次添加
{
   ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
   for(int i=1;i<=100;i++)
   {
    strTemp.Format("%d",i);
    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
   }
}
4,刪除
DeleteString( UINT nIndex )//刪除指定行,
5,插入
InsertString( int nIndex, LPCTSTR lpszItem )//將行插入到指定位置
6,查找
FindString( int nStartAfter, LPCTSTR lpszItem )//可以在當前所有行中查找指定的字符傳的位置,nStartAfter指明從那一行開始進行查找。
int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以選中包含指定字符串的行
二、如何控制Combo Box的下拉長度
1,首先要知道兩點:一、那就是在設計界面裡,點擊一下Combo Box的下拉箭頭,此時出現的調整框就是Combo Box的下拉調整框。
2,二、屬性裡有個 No integral height 鉤選項,表示最大長度為設計長度,如果實際內容比設計長度多,就出現滾動條,少就以實際長度顯示。
三、選擇其中的某行
1,選中:
int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//當前選中的行。
2,設置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//設置第n行內容為顯示的內容。
四、取得Combo Box框內容
1取當前內容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

2取其他行內容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);
-----------------------------------------------------------------------------------------------------------------------------------
兩個DropDownList 控件,選擇第一個後,第二個根據第一個搜索數據庫表內容填充信息。
問題是,第一個DropDownList 控件,我實現了SelectedIndexChanged事件,不過好像沒反應啊。
謝謝 
把Postback設成True
AutoPostBack="True"

2010年2月11日 星期四

scull compile

http://blog.csdn.net/heyuxiang2001/archive/2009/07/18/4359693.aspx


1。scripts/Makefile.build:46: *** CFLAGS was changed in "examples/scull/Makefile". Fix it to use EXTRA_CFLAGS。 停止。
解决方法:将 Makefile 中的 CFLAGS 改为 EXTRA_CFLAGS
2. examples/scull/main.c:17:26: error: linux/config.h: 没有该文件或目录
解决方法: 将 main.c 中的这条 include 语句注释掉。
3. examples/scull/access.c: 在函数‘scull_u_open’中:
   examples/scull/access.c:107: 错误: 提领指向不完全类型的指针
解决方法:access.c 中添加:#include
4. examples/scull/access.c: 在函数‘scull_access_setup’中:
    examples/scull/access.c:355: 警告: 格式字符串不是一个字面字符串而且没有待格式化的实参
解决方法:将       kobject_set_name(&dev->cdev.kobj,  devinfo->name); 改为:
        kobject_set_name(&dev->cdev.kobj, “%s", devinfo->name);
 因为 kobject_set_name 有一个像 printf 一样的参数表。

2010年2月10日 星期三

無線有線 同時上網

同時使用兩張網路卡的功能在 Windows 系統原本就有支援了,所以可以不需要再接一台 IP 分享器。只要使用 route 指令即可,作法如下:

1. 首先將 DOS 視窗開啟
2. 鍵入指令 ipconfig /all 後將會列出目前使用的網路卡資訊
Ethernet adapter 區域連線:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Marvell Yukon 88E8036 PCI-E Fast Ethernet Controller
Physical Address. . . . . . . . . : 00-01-4A-F5-AE-4D
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.1.123
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.2
DHCP Server . . . . . . . . . . . : 192.168.1.2
DNS Servers . . . . . . . . . . . : 192.168.1.2
Lease Obtained. . . . . . . . . . : 2008年7月9日 上午 09:54:10
Lease Expires . . . . . . . . . . : 2008年7月10日 上午 09:54:10

Ethernet adapter 無線網路連線 5:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Intel(R) PRO/Wireless 3945ABG Network Connection
Physical Address. . . . . . . . . : 00-13-02-12-CB-07
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 172.16.31.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.31.1
DHCP Server . . . . . . . . . . . : 172.16.31.1
DNS Servers . . . . . . . . . . . : 172.16.31.1
Lease Obtained. . . . . . . . . . : 2008年7月9日 上午 09:00:44
Lease Expires . . . . . . . . . . : 2008年7月9日 下午 03:00:44

PS 1. "Ethernet adapter 區域連線:" 為社區網路
PS 2. "Ethernet adapter 無線網路連線 5:" 為 ADSL 家用網路

3. 鍵入指令 route print 後會列出目前使用的網路卡與網路溝通的資訊
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 01 4a f5 ae 4d ...... Marvell Yukon 88E8036 PCI-E Fast Ethernet Contro ller - Packet Scheduler Miniport
0x3 ...00 13 02 12 cb 07 ...... Intel(R) PRO/Wireless 3945ABG Network Connection - Packet Scheduler Miniport
0x10005 ...00 02 c7 df 10 de ...... Bluetooth Personal Area Network - Packet Scheduler Miniport
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.31.1 172.16.31.3 25
0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.123 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.16.31.0 255.255.255.0 172.16.31.3 172.16.31.3 25
172.16.31.3 255.255.255.255 127.0.0.1 127.0.0.1 25
172.16.255.255 255.255.255.255 172.16.31.3 172.16.31.3 25
192.168.1.0 255.255.255.0 192.168.1.123 192.168.1.123 20
192.168.1.123 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.1.255 255.255.255.255 192.168.1.123 192.168.1.123 20
224.0.0.0 240.0.0.0 172.16.31.3 172.16.31.3 25
224.0.0.0 240.0.0.0 192.168.1.123 192.168.1.123 20
255.255.255.255 255.255.255.255 172.16.31.3 172.16.31.3 1
255.255.255.255 255.255.255.255 192.168.1.123 192.168.1.123 1
255.255.255.255 255.255.255.255 192.168.1.123 10005 1
Default Gateway: 192.168.1.2
===========================================================================

4. 由 3 的藍色字部份可以發現它是以 "Ethernet adapter 區域連線:" 為主,因為它的 Metric 值較 "Ethernet adapter 無線網路連線 5:" 小。
5. 依 3 的例子,若要使用無線網路做為連上 Internet 的首選則請鍵入指令 route add 0.0.0.0 mask 0.0.0.0 172.16.31.1 metric 19 if 3 (即 metric 的值較小就可以了)
6. 這樣就可以同時使用社區網路及家用網路

2010年2月6日 星期六

openssh setting

/etc/ssh/sshd_config
------------------------------------
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

將前面的 # 拿掉
TCPKeepAlive yes
ClientAliveInterval 0
ClientAliveCountMax 3


接下來修改 Pietty 的參數,進入」PieTTY 連線設定」。
選擇「Connection」項目,左邊將「Seconds between keepalives [0 to turn off]」輸入你所需要每隔幾秒,傳送一個封包訊息保持連線。