使用點陣圖選單項——新增線和圖形到選單 (轉)
_adding_lines_and_graphs_to_a_menu>新增線和圖形到選單
下列的程式碼例子顯示了怎樣新建一個包含點陣圖項的選單。它新建了兩個選單。首先是一個包含三個點陣圖項的圖表選單:一個圓形統計圖表,一個線形統計圖表和一個條形統計圖表。這個例子說明了怎樣從應用的資源中裝入這些點陣圖,及怎樣使用語言/VISUAL%20MSDN/選單/使用選單/使用選單項點陣圖/newmenus_45md.htm">CreatePopupMenu和去新建選單和選單項。
第二個選單是一個線形選單。它包含顯示線形風格的點陣圖(假如這些是定義好的)線形風格點陣圖是在執行時使用GDI函式新建的。
這是應用程式資源定義檔案中定義的點陣圖資源。
PBITMAP pie.bmp LINE BITMAP line.bmp BAR BITMAP bar.bmp
這是應用程式標頭檔案的有關部分。
// 選單項識別符號 #define IDM_SOLID PS_SOLID #define IDM_DASH PS_DASH #define IDM_DASHDOT PS_DASHDOT #define IDM_DASHDOTDOT PS_DASHDOTDOT #define IDM_PIE 1 #define IDM_LINE 2 #define IDM_BAR 3 // 線類形標記 #define SOLID 0 #define DOT 1 #define DASH 2 #define DASHDOT 3 #define DASHDOTDOT 4 // 畫筆大不 #define CPENS 5 // 圖表型別標記 #define PIE 1 #define LINE 2 #define BAR 3 // 函式原型 LRESULT ENTRY MainWndProc(HWND, UINT, WPARAM, LPARAM); VOID MakeChartMenu(HWND); VOID MakeLineMenu(HWND, HPEN, HBITMAP);
下列的例子顯示了怎樣在應用程式中新建選單及選單項。
LRESULT APIENTRY MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { static HPEN hpen[CPENS]; static HBITMAP hbmp[CPENS]; int i; switch (uMsg) { case WM_CREATE: // 新建圖表和線形選單 MakeChartMenu(hwnd); MakeLineMenu(hwnd, hpen, hbmp); return 0; // 處理其他的視窗訊息 case WM_DESTROY: for (i = 0; i < CPENS; i++) { Delete(hbmp[i]); DeleteObject(hpen[i]); } PostQuitMessage(0); break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return NULL; } VOID MakeChartMenu(HWND hwnd) { HBITMAP hbmpPie; // 圓形統計分格圖表點陣圖控制程式碼 HBITMAP hbmpLine; // 線形圖表點陣圖控制程式碼 HBITMAP hbmpBar; // 條形圖表點陣圖控制程式碼 HMENU hmenuMain; // 主選單控制程式碼 HMENU hmenuChart; // 圖表選單控制程式碼 // 從資原始檔中裝入圖形,線形和條形圖表點陣圖 hbmpPie = Loaitmap(hinst, MAKEINTRE(PIE)); hbmpLine = LoadBitmap(hinst, MAKEINTRESOURCE(LINE)); hbmpBar = LoadBitmap(hinst, MAKEINTRESOURCE(BAR)); // 新建圖表選單並新增它到選單欄 // 附加圓形,線形和條形選單條到圖表選單。 hmenuMain = GetMenu(hwnd); hmenuChart = CreatePopupMenu(); AppendMenu(hmenuMain, MF_STRING | MF_POPUP, (UINT) hmenuChart, "Chart"); AppendMenu(hmenuChart, MF_BITMAP, IDM_PIE, (LPCTSTR) hbmpPie); AppendMenu(hmenuChart, MF_BITMAP, IDM_LINE, (LPCTSTR) hbmpLine); AppendMenu(hmenuChart, MF_BITMAP, IDM_BAR, (LPCTSTR) hbmpBar); return; } VOID MakeLineMenu(HWND hwnd, HPEN en, HBITMAP phbmp) { HMENU hmenuLines; // 線形選單控制程式碼 HMENU hmenu; // 主選單控制程式碼 COLORREF crMenuClr; // 選單條背景顏色 HBRUSH hbrBackground; // 背景刷控制程式碼 HBRUSH hbrOld; // 早先刷控制程式碼 wLineX; // 線形點陣圖的寬 WORD wLineY; // 線形點陣圖的高 HDC hdcMain; // 主視窗的DC控制程式碼 HDC hdcLines; // 相容DC控制程式碼 HBITMAP hbmpOld; // 早先點陣圖控制程式碼 int i; // 迴圈計數器 // 新建線形選單。新增它到選單欄 hmenu = GetMenu(hwnd); hmenuLines = CreatePopupMenu(); AppendMenu(hmenu, MF_STRING | MF_POPUP, (UINT) hmenuLines, "&Lines"); // 為選單項背景顏色新建一個刷子。 crMenuClr = GetSylor(COLOR_MENU); hbrBackground = CreateSolidBrush(crMenuClr); // 為線形點陣圖新建一個相容裝置描述符, // 並在其中選擇背景刷 hdcMain = GetDC(hwnd); hdcLines = CreateCompatibleDC(hdcMain); hbrOld = Object(hdcLines, hbrBackground); // 獲得複選標記點陣圖的尺寸。 // 線形點陣圖的寬將是複選標記點陣圖寬的五倍 wLineX = GetSystemMetrics(SM_CXMENUCHECK) * (WORD) 5; wLineY = GetSystemMetrics(SM_CYMENUCHECK); // 在裝置描述符中新建點陣圖並選擇它們,一次一個, // 用選單項背景色填充它來初始化每一個點陣圖。 for (i = 0; i < CPENS; i++) { phbmp[i] = CreateCompatibleBitmap(hdcMain, wLineX, wLineY); if (i == 0) hbmpOld = SelectObject(hdcLines, phbmp[i]); else SelectObject(hdcLines, phbmp[i]); ExtFloodFill(hdcLines, 0, 0, crMenuClr, FLOODFILLBORDER); } // 新建畫筆 phpen[0] = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); phpen[1] = CreatePen(PS_DOT, 1, RGB(0, 0, 0)); phpen[2] = CreatePen(PS_DASH, 1, RGB(0, 0, 0)); phpen[3] = CreatePen(PS_DASHDOT, 1, RGB(0, 0, 0)); phpen[4] = CreatePen(PS_DASHDOTDOT, 1, RGB(0, 0, 0)); // 在相容裝置描述符中選擇一個畫筆和一個點陣圖, // 在點陣圖中繪製一個線形,並應用這個點陣圖到線形選單中作為一個項。 for (i = 0; i < CPENS; i++) { SelectObject(hdcLines, phbmp[i]); SelectObject(hdcLines, phpen[i]); MoveToEx(hdcLines, 0, wLineY / 2, NULL); Lo(hdcLines, wLineX, wLineY / 2); AppendMenu(hmenuLines, MF_BITMAP, i + 1, (LPCTSTR) phbmp[i]); } // 釋放主視窗的裝置描述符並消毀相容裝置描述符。同樣,消毀背景刷 ReleaseDC(hwnd, hdcMain); SelectObject(hdcLines, hbrOld); DeleteObject(hbrBackground); SelectObject(hdcLines, hbmpOld); DeleteDC(hdcLines); return; }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用點陣圖選單項——點陣圖選單項例項 (轉)
- 使用點陣圖選單項——建立點陣圖 (轉)
- 使用點陣圖選單項——設定點陣圖型別標記 (轉)型別
- 建立點陣圖選單 (轉)
- Win10右鍵選單中“圖形屬性”和“圖形選項”怎麼刪除Win10
- 圓形可滑動選單(可以動態新增選單項)
- 為什麼我的win10電腦右鍵沒有圖形選項_Win10右鍵選單沒有“圖形屬性”和“圖形選項”如何解決Win10
- 使用Vue實現下拉選單框批量新增選項Vue
- Cocos2dx之文字選單和圖片選單的使用
- win10系統中怎麼給右鍵選單選項新增圖示Win10
- 在選單中加入圖示 (轉)
- Flutter自定義折線圖並新增點選事件Flutter事件
- 新增“Windows Defender掃描”選項到win10右鍵選單的方法WindowsWin10
- JCEF 如何修改右鍵選單項(JCEF在右鍵選單中新增開發者選項-show dev tools)dev
- 微信公眾號-點選選單回覆圖片二維碼
- select下拉選單新增不重複項
- 手動新增git到 右鍵選單Git
- ABP後臺管理頁面AdminLTE框架,實現選單項點選後,選單展開當前選單項高亮框架
- 公眾號點選選單會直接跳轉到 Safari 開啟
- 點選刪除或者新增表格行簡單程式碼例項
- VC++的選單控制和自繪選單。 (轉)C++
- 刪除和新增select下拉選單option項程式碼例項
- Win10系統下新增“註冊dll”選項到右鍵選單的方法Win10
- 選擇下拉選單項實現跳轉效果
- RecyclerView使用指南(三)—— 新增分割線和點選事件View事件
- jQuery 關於點選選單項,使子條目jQuery
- javascript樹形導航選單例項程式碼JavaScript單例
- css樹形導航選單程式碼例項CSS
- C#使用 NPOI 新增圖片到 Excel 單元格C#Excel
- javascript新增和刪除select下拉選單option項程式碼例項JavaScript
- 選單(轉)
- ztree樹形選單demo
- Win10系統新增快捷方式到開始選單的方法【圖文教程】Win10
- Win10系統刪除右鍵選單“使用看圖王美化圖片”選項的方法Win10
- 選中select下拉選單項提交表單
- InnoSetup簡單教程三,開始選單增加程式檔案並新增程式圖示
- No MFC,Only API——選單的建立和使用 (轉)API
- echart map圖示切換多選,單選,預設選中