用DEVC++作圖

小海豚學NOIP,老師說要用DEV C++。

小海豚喜歡畫圖,記得以前用C#編些程序給她看。可前一陣打開看,我的免費Visual Studio過期了。可惡的Microsoft ,不想用盜版難道就要每個月就下載一次?

于是就用DEV C++的Windows調用吧。這里還有一個插曲:我搜DEV C++如何作圖,結果找到了CSDN,花4個點下了winbgim,然后才想起直接用Windows調用豈不更正宗些?如圖:

?

這樣就建立了名為tstdraw的工程。

 1 #include <windows.h>
 2 
 3 LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
 4     static int  cxClient, cyClient ;
 5     static HPEN hPen1, hPen2, hPen3;
 6     HDC         hdc ;
 7     int         i ;
 8     PAINTSTRUCT ps ;
 9     switch(Message) {
10         case WM_SIZE: {
11             cxClient = LOWORD (lParam) ;
12             cyClient = HIWORD (lParam) ;
13             break;
14         }
15         case WM_PAINT: {
16             InvalidateRect(hwnd, NULL, TRUE);
17             hdc = BeginPaint (hwnd, &ps) ;
18             hPen1 = CreatePen(PS_SOLID, 2, 0x0000ff);
19             hPen2 = CreatePen(PS_SOLID, 4, 0xa0ff00);
20             hPen3 = CreatePen(PS_DOT, 0, 0xff00ff);
21             SelectObject(hdc, hPen1);
22             MoveToEx (hdc, 0, cyClient/2, NULL) ;
23             LineTo   (hdc, cxClient, cyClient/2) ;
24             SelectObject(hdc, hPen2);
25             Rectangle(hdc, 300, 200, 70, 80); 
26             SelectObject(hdc, hPen3);
27             Ellipse(hdc, cxClient/4, cyClient/3, cxClient/4+cxClient/3, cyClient/3+cxClient/3); 
28             SelectObject(hdc, hPen1);
29             RoundRect(hdc, 150, 160, 350, 250, 40, 20); 
30             DeleteObject(hPen1);
31             DeleteObject(hPen2);
32             DeleteObject(hPen3);
33 
34             break;
35         }
36         case WM_CLOSE: {
37             DestroyWindow(hwnd);
38             break;
39         }
40         case WM_DESTROY: {
41             PostQuitMessage(0);
42             break;
43         }
44         default:
45             return DefWindowProc(hwnd, Message, wParam, lParam);
46     }
47     return 0;
48 }
49 
50 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
51     WNDCLASSEX wc; 
52     HWND hwnd; 
53     MSG Msg; 
54     memset(&wc,0,sizeof(wc));
55     wc.cbSize         = sizeof(WNDCLASSEX);
56     wc.lpfnWndProc     = WndProc; 
57     wc.hInstance     = hInstance;
58     wc.hCursor         = LoadCursor(NULL, IDC_ARROW);
59     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
60     wc.lpszClassName = "WindowClass";
61     wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); 
62     wc.hIconSm         = LoadIcon(NULL, IDI_APPLICATION);
63 
64     if(!RegisterClassEx(&wc)) {
65         MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
66         return 0;
67     }
68 
69     hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Try graphics",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
70         CW_USEDEFAULT,
71         CW_USEDEFAULT,
72         640,
73         480,
74         NULL,NULL,hInstance,NULL);
75     if(hwnd == NULL) {
76         MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
77         return 0;
78     }
79     while(GetMessage(&Msg, NULL, 0, 0) > 0) { 
80         TranslateMessage(&Msg); 
81         DispatchMessage(&Msg); 
82     }
83     return Msg.wParam;
84 }

其中只有16-32行的是自己寫的,其他都是工程自動生成的。

運行結果如下(拉動了窗口,圖形的位置大小根據相對或絕對坐標改變或不變):

?

?

?

轉載于:https://www.cnblogs.com/htbb/archive/2013/02/21/GraphicUsingDEVCpp.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376857.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python服務器開發三:Socket

Python服務器開發三&#xff1a;Socket socket是操作系統中I/O的延續&#xff0c;它可以使進程和機器之間的通信成為可能。socket可以看成一個標準的文件描述符。不同的是文件需要用open()函數打開&#xff0c;而socket用socket() 函數建立.recv()、send()函數和read()、write(…

Syntax error: Bad for loop variable解決辦法

在Ubuntu下寫的shell文件t.sh執行時出現錯誤&#xff1a; 1 t.sh: 6: Syntax error: Bad for loop variable 從ubuntu 6.10開始&#xff0c;ubuntu就將之前默認的bash shell更換成了dash shell&#xff0c;其表現為/bin/sh鏈接倒了/bin/dash&#xff0c;而不是傳統的/bin/bash&…

Linux命令常見

摘自&#xff1a; 常考的 21 條 Linux 命令 目錄&#xff09;cd,切換路徑ls,查看文件與目錄的命令cp,用于復制文件mv,用于移動文件、目錄cat,查看文件內容find&#xff0c;文件搜索文件權限命令&#xff0c; 設置權限&#xff0c;-取消權限文本處理命令打包和壓縮文件命令進程相…

記一次調試

這是我最近幾個月來遇到的最棘手的一個問題&#xff1a;* 昨天花了4個小時找出第一層次的原因這個糾結啊&#xff0c;本來和老婆說好準時下班回家吃飯的&#xff0c;結果被這個問題拖了老久。這是一個gradle的plugin&#xff0c;用來resolve公司內部的dependency的&#xff0c;…

OSGi.NET 學習筆記 [模塊化和插件化][小結]

【目錄】-【模塊化和插件化】-【小結】 現在我們來對OSGi.NET的“模塊化和插件化”做一個小結&#xff0c;再次把官方的說明拿出來  1&#xff09; 物理隔離&#xff1a;基于UIOSP開發的模塊是一個物理隔離的可單獨部署的模塊&#xff0c;每一個模塊擁有獨立的文件夾、類型空…

miniob :相關環境配置

How to build 參考視頻&#xff1a;https://www.bilibili.com/video/BV1gv411A7oA?spm_id_from333.999.0.0將代碼下載并且安裝編譯。 git clone失敗的話參考&#xff1a;https://blog.csdn.net/sxg0205/article/details/81412921 install cmakebuild libevent git submodul…

Fedora 20 配置

前幾天裝了fedora 20, 斷斷續續的進行了以下配置&#xff1a; 1. 安裝oracle java及jdk版本切換 安裝的過程很簡單&#xff0c;從oracle官網上下載jdk及jre的rpm包&#xff0c;使用rpm -ivh 安裝。但是遇到一個問題&#xff0c;因為fedora系統自帶了openJDK,如果安裝oracle的jd…

raft算法學習(一):角色概念以及選舉過程

Raft算法是強領導模型&#xff0c;集群中只能有一個領導。 下面是raft的視頻講解&#xff1a; raft raft的三種角色及其概念 服務器節點狀態一共有三種&#xff1a;領導者&#xff08;Leader&#xff09;、跟隨著&#xff08;Follower&#xff09;、候選人&#xff08;Candid…

解決 FLex 4.0 Module里面Alert.show();出錯問題

TypeError: Error #1009: 無法訪問空對象引用的屬性或方法。 at mx.managers::PopUpManagerImpl/http://www.adobe.com/2006/flex/mx/internal::createModalWindow()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\PopUpManagerImpl.as:701] at mx.manag…

datetime2 數據類型

.net的Entity Framework構建網站數據層&#xff0c;給一個實體的DATETIME類型的屬性賦值時 突然莫名奇妙顯示有一個類型不匹配的異常如下&#xff1a; System.Data.SqlClient.SqlException: 從 datetime2 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值。 解決方法&a…

Yslow的A評級指南

這里測的是V2引擎&#xff0c;V1想拿A幾乎不可能&#xff0c;一個CDN測試的F就可以輕松廢了你的網站。 A評級 現在一個一個分析。 User fewer HTTP Requests&#xff1a;減少HTTP請求 圖片、CSS、JS、flash等這些都需要增加http請求數&#xff0c;減少這些元素的數量能減少響應…

jquery下 選擇器整理

jQuery 的選擇器可謂之強大無比&#xff0c;這里簡單地總結一下常用的元素查找方法 $("#myELement") 選擇id值等于myElement的元素&#xff0c;id值不能重復在文檔中只能有一個id值是myElement所以得到的是唯一的元素 $("div") 選擇所有的di…

git日常使用教程

目錄git日常使用git 基礎用法(本地)git branchgit checkoutgit mergegit rebaseHEAD ,在提交樹上移動相對引用強制修改分支位置撤銷變更整理提交記錄提交技巧Git TagsGit Describegit 基礎用法(遠程)git fetchgit pullgit push偏離的提交歷史&#xff0c;十分重要&#xff01;&…

android一鍵分享功能不使用任何第三方sdk

在android中有自帶的一鍵分享功能&#xff0c;不過它會把所有帶分享的應用都找出來&#xff0c;如果我們只需要一些常見的分享應用&#xff0c;該如何做呢&#xff1f; 下面看我的效果圖&#xff08;橫屏和豎屏自動適配&#xff09;&#xff1a; 接下來看我的調用&#xff08;支…

包含EditText組件的界面中,禁止自動彈出軟鍵盤

解決方法&#xff1a; 1&#xff09;在Manifest.xml文件中相應的activity下添加一下代碼&#xff1a;android:windowSoftInputMode"stateHidden"2&#xff09;讓EditText失去焦點&#xff0c;使用EditText的clearFocus方法 例如&#xff1a;EditText edit(EditText)f…

gcc 編譯器使用指南

目錄安裝準備test.cpp編譯g 編譯參數-g &#xff1a;編譯帶調試信息的可執行文件-O[n] &#xff1a;開啟優化-l 和 -L &#xff1a;指定庫文件 | 指定庫文件路徑-I &#xff1a;指定頭文件搜索目錄-Wall 和 -w&#xff1a;打印警告信息 | 關閉警告信息-stdc11 &#xff1a;設置…

bug found:定義對象時

看下面代碼 class Test{ }; class Test2{public:Test2(Test *t){}};int main(){Test test();//把定義一個對象 “Test test;” 寫成 “Test test();”函數聲明了&#xff01;Test2 test2(&test);//return 0;}Dev-cpp的提示信息&#xff1a; no matching function for c…

CMake學習使用(基于vscode)

目錄語法一些重要指令CMake常用變量CMake編譯工程編譯流程兩種構建方式實例展示參考&#xff1a; 基于VSCode和CMake實現C/C開發 | Linux篇 語法 基本語法格式&#xff1a;指令(arg1 arg2 …) 參數使用括弧括起來參數之間使用空格或者分號分開 指令是大小寫無關的&#xff0…

idhttp.post方式 調用datasnap rest 遠程方法

idhttp.get方式調用&#xff0c;這種比較簡單&#xff0c;大家都會。post方式網上卻沒有任何成功的代碼&#xff0c;本人也是摸索了一個上午才搞定。 分享給大家。 &#xff08;1&#xff09;post方式調用的遠程方法&#xff0c;方法名必須加“update”前綴&#xff0c;不加行不…

[轉]連接excel數據源時,首行包含列名稱選項在連接字符串中的設置。

關于Excel導入的HDRYES; IMEX1詳解 ProviderMicrosoft.Jet.OLEDB.4.0;Data Source111.xls;Extended Properties"Excel 8.0;HDRNO"; 其中HDRNO或YES即首行包含列名稱選項 (參數HDR的值&#xff1a;HDRYes&#xff0c;這代表第一行是標題&#xff0c;不做為數據使用&am…