<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                這個控件其實不用阿拉來介紹,因為它太常見了,就好像我們一出門就會看到妹子一樣常見。當然也可以說,它是對ListBox的擴充。 在使用該控件之前,我先介紹VS的一個相當好玩的功能。 在代碼文件的#include指令上右擊,從彈出的菜單中選擇“生成包含文件關系圖”,如下圖: ![](https://box.kancloud.cn/2016-06-14_575fd2d318950.png) 然后你喝一口咖啡,你會看到這樣的東西: ![](https://box.kancloud.cn/2016-06-14_575fd2d32fc5e.png) 這個關系圖,演示了你的項目中的頭文件,源文件以及外部引用文件之間的關系。把鼠標移到上面,滾動滑輪,可以縮放大小。把鼠標移到“外部”節點上,點擊左邊的向下箭頭,可以看到本項目與外部頭文件的關系。 ![](https://box.kancloud.cn/2016-06-14_575fd2d3522aa.png) ![](https://box.kancloud.cn/2016-06-14_575fd2d362ddc.png) 所以,如果你的程序比較復雜,頭文件眾多,不妨試試這功能。 ![](https://box.kancloud.cn/2016-06-14_575fd2d3a0634.png) ===================================================== 下面我們來使用ListView來顯示一組數據,我定義了一個結構體: ~~~ // 用于測試的結構體 struct STUDENTINFO { WCHAR Name[15]; WCHAR Age[3]; WCHAR Address[50]; }; ~~~ 假設它代表了一位學員的信息——姓名、年齡、地址。 我們要用ListView來顯示一些學員的信息,顯然,每一個學員信息都有三個字段,ListView有多種視圖,如圖: 列表小圖標 ![](https://box.kancloud.cn/2016-06-14_575fd2d3d2332.png) 大圖標 ![](https://box.kancloud.cn/2016-06-14_575fd2d3e4e8b.png) 平鋪 ![](https://box.kancloud.cn/2016-06-14_575fd2d40e187.png) 詳細視圖 ![](https://box.kancloud.cn/2016-06-14_575fd2d423a8f.png) 我們要顯示多個字段,故應選擇最后一種視圖。 好,下面我們就做一個練習,實例是檢驗學習成果的唯一標準。 1、新建一個對話框資源,在設計器中拖一個List Control和兩個Button,List Control其實就是ListView控件。 ![](https://box.kancloud.cn/2016-06-14_575fd2d437e65.PNG) 設置View屬性為Report。 ![](https://box.kancloud.cn/2016-06-14_575fd31047772.PNG) 2、在對話框消息處理函數中,處理WM_INITDIALOG消息,向ListView添加列。 ~~~ case WM_INITDIALOG: // 獲取ListView控件的句柄 hListview = GetDlgItem(hDlg, IDC_LV); // 設置ListView的列 LVCOLUMN vcl; vcl.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; // 第一列 vcl.pszText = L"姓名";//列標題 vcl.cx = 90;//列寬 vcl.iSubItem = 0;//子項索引,第一列無子項 ListView_InsertColumn(hListview, 0, &vcl); // 第二列 vcl.pszText = L"年齡"; vcl.cx = 90; vcl.iSubItem = 1;//子項索引 ListView_InsertColumn(hListview, 1, &vcl); // 第三列 vcl.pszText = L"地址"; vcl.cx = 200; vcl.iSubItem = 2; ListView_InsertColumn(hListview, 2, &vcl); return 0; ~~~ 向LV添加列,調用ListView_InsertColumn宏,注意它是宏不是函數(你也可以發送LVM_INSERTCOLUMN消息),其中有一個參數是指向LVCOLUMN結構體的指針,關于這個結構體的成員我就不說了,有興趣的看MSDN。 這樣,LV控件就有了三個列了,就像這樣。 ![](https://box.kancloud.cn/2016-06-14_575fd3105bfa8.PNG) 3、另外兩個按鈕, 一個用來向LV中添加項,后一個是清除所有項。 還記得吧,要響應按鈕單擊,要處理WM_COMMAND消息,然后通過wParam參數的低字節位來判斷用戶點擊了哪個按鈕,指示了對應按鈕的ID。 ~~~ case WM_COMMAND: if (LOWORD(wParam) == IDC_BTNADD) { STUDENTINFO stu[ ] = { { L"小劉", L"20", L"火星" }, { L"老趙", L"21", L"木星" }, { L"小胡", L"30", L"水星" }, { L"老高", L"32", L"山溝一號" }, { L"黃牛", L"24", L"不知哪個星球來的" }, { L"王七", L"28", L"超人之鄉" } }; //求出數組中元素的個數 int arrCount = (int)(sizeof(stu) / sizeof(stu[0])); LVITEM vitem; vitem.mask = LVIF_TEXT; for (int i = 0; i < arrCount; i++) { /* 策略: 先添加項再設置子項內容 */ vitem.pszText = stu[i].Name; vitem.iItem = i; vitem.iSubItem = 0; ListView_InsertItem(hListview, &vitem); // 設置子項 vitem.iSubItem = 1; vitem.pszText = stu[i].Age; ListView_SetItem( hListview, &vitem); vitem.iSubItem = 2; vitem.pszText = stu[i].Address; ListView_SetItem(hListview, &vitem); } } else if(LOWORD(wParam) == IDC_BTNCLEAR) { // 清除ListView中的所有項 ListView_DeleteAllItems(hListview); } return 0; ~~~ 首先,為了在LV中加入數據,聲明了一個STUDENT數組,STUDENT結構體在前面定義的,表示一位學員的信息。由于這個數組在聲明的時候,并沒有指定元素個數,在后面執行for循環添加項之前,先要知道數組中有多少個元素。 方法是用sizeof運算符取出整個數組的字節長度,然后除以第一個元素的長度,這樣就求出元素的個數了。 向LV添加項,調用ListView_InsertItem宏,注意添加方法,要先添加項,隨后再用ListView_SetItem宏來設置子項的內容。由于兩個宏使用相同的參數,所以在循環前,我們都用一個LVITEM,在循環中我們只改變它的項索引值和文本內容再傳到ListView_InsertItem宏或ListView_SetItem宏,這樣也免得多次分配內存數據。 清除LV中的所有項,直接用ListView_DeleteAllItems宏就可以了。 以上操作也可以通過發送對應消息來完成,不過,直接調用宏似乎比SendMessage方便。 最后,看一下最終結果。 ![](https://box.kancloud.cn/2016-06-14_575fd3106ddda.PNG) 由于這個例子相對有些復雜,稍后我把代碼上傳到[資源]中。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看