創作內容

12 GP

用Dev-C++寫簡單Windows介面

作者:永無止盡的昨天│2010-05-09 01:52:41│巴幣:1,714│人氣:28551
Dev-C++雖然是免費的C/C++編譯器
但是Dev-C++也幫我們建立好Win32 API的相關連結
可以讓我們快速的製作出視窗介面
 
首先第一個步驟式開啟專案

接下來點選Windows Application

最後儲存編譯就可以執行底下的視窗程式
 
這些步驟雖然簡單
但是這其實是Dev-C++的作者幫我們些好的範本
如果不了解範本裡面的程式是很難繼續下一步的
 
不過本人對於範本的程式碼也還沒到完全了解的地步
因此只能做部分的解說
 
#include <windows.h>         //將windows的函式庫給呼叫近來

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);//宣告windows的程序

char szClassName[ ] = "WindowsApp";  //建立類別名稱
 
/*windows 主程式開始*/
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* 宣告視窗類別的資料結構*/
 
    /* 視窗類別的設定 */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* 功能表的設定,目前是沒有的*/
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */  
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; //視窗的背景設定
 
    /* 註冊視窗類別,如果失敗就會跳出*/
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* 如果註冊成功,就能建立這個視窗程式*/
   /* CreateWindowEx為設定視窗的各種樣式*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* 類別名稱 */
           "Windows App",       /* 標題名稱*/
           WS_OVERLAPPEDWINDOW, /* 視窗的風格設定 */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* 寬度 */
           375,                 /* 高度 */
           HWND_DESKTOP,        /* 這個視窗程式是桌面的子視窗*/
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* 將此視窗秀到螢幕上 */
    ShowWindow (hwnd, nFunsterStil);
    /* 持續執行訊息回圈. 直到GetMessage傳回0時 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}

/*  This function is called by the Windows function DispatchMessage()  */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=818224
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 13 篇留言

短暫爆發的骷髏商
請問 C++

哪裡可以下載呢?

05-09 02:11

永無止盡的昨天
http://www.math.ncu.edu.tw/~jovice/c++/boards/devcpp.htm

除了這篇之外
我還有另外3篇是基礎篇05-09 09:33
李兒諳
唔,視窗軟體設計,
可以去逛些危險的網站下載.pdf檔,
或者對岸的CSDN(資源蠻多的,但是重複超多),
下載有關Programming Windows 5th edition的文件,
雖然那是1998年的書,
但是其程式碼,
稍微改一下Dev-C++的.dll連結後還是可以用,
(但用visual stdio 2005後,
選成轉換成新的C專案什麼都不用改就可以用)
 
個人的blog
http://www.wretch.cc/blog/ndli22/
寫得有些濫,參考看看吧!
今天會寫一個Dev-C++視窗程式!
turn the light off

07-25 08:36

譴責的冥牛奶
恩恩

02-19 06:48

白羽優莉奈
devcpp的話用WxWidgets就好了

02-03 15:46

娜娜奇魔戒精
那個
我也很想用C++寫寫小遊戲
請問這些觀念如果離開DevC++之後也會很實用嗎

05-26 22:55

永無止盡的昨天
DevC++只是工具,C++跟C語言是通用的05-26 22:56
娜娜奇魔戒精
不是啦
我是想問這個不會有IDE包裝好的東西吧
想要從最底部都自己用C++寫

05-26 23:04

永無止盡的昨天
DevC++其實沒有包什麼東西,很多東西都要從很底層自己寫
像我目前的視窗程式,那是比MFC還要底層的東西
所以基本上不用擔心在別的編譯器不能用05-26 23:08
不在相信任何人
請問要怎麼安裝我是英文文盲 為什W7 64X的 不能安裝是相容性嗎0.0?

08-21 23:05

永無止盡的昨天
你是要安裝Dev-C++嗎?x64可以安裝,因為我目前的系統也是x64,如果可以的話把錯誤訊息敘述出來,另外我沒有RC語音08-21 23:48
不在相信任何人
QAQ好了大大我準備好了 請把你腦袋的能量傳給我吧 我人不太會講話可是我熱愛軟硬體 這類東西尤其是PC

08-21 23:52

永無止盡的昨天
大多數都是靠使用經驗而已,那種很多東西東西不是可以言語化的,總之盡量亂搞就對了,軟體壞了重灌救行了,程式方面除了Dev-C++外,還有CodeBlocks也是可以寫程式的08-21 23:57
永無止盡的昨天
忘了跟你說成是的學習資源,網址:http://openhome.cc/Gossip/CGossip/,程式這種東西是無法教會的,只能靠自己學習,因為程式最重要的就是邏輯跟想法08-22 00:29
oVo巴爾坦星人
效能應該比 .net 製做的視窗好吧?

10-24 21:09

永無止盡的昨天
這可不一定,畢竟Dev-C++只能用Win32的API,.net優化的程度如果比單純呼叫Win32的API還好的話,那就很難說了,不過這只有微軟內部才知道10-24 23:27
oVo巴爾坦星人
請問如何顯示圖片在宣告出來的視窗??

02-07 14:00

永無止盡的昨天
關鍵宣告變數為HDC hdc,mdc、PAINTSTRUCT ps、HBITMAP hbmp
處理訊息在case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
mdc = CreateCompatibleDC(NULL);
hbmp =(HBITMAP)LoadImage(NULL, "XXX.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
SelectObject(mdc, hbmp);
BitBlt ( hdc, 0, 0, 800, 600, mdc,0, 0, SRCCOPY);
DeleteDC(hdc);
DeleteDC(mdc);
EndPaint(hwnd,&ps);02-07 14:21
oVo巴爾坦星人
話說我知道C++能引用 DIRCTX... 那麼用DEV做的話或許比VC效能好吧? 畢竟 VC 還經過微軟的公用碼做轉換...

02-07 14:02

永無止盡的昨天
這很難斷定02-07 14:17
K
請問如果想將C++學好的話
我該從哪著手??
要怎麼去學習??
我完全沒概念又要怎麼辦??

04-13 16:21

村村

05-24 19:04

我要留言提醒:您尚未登入,請先登入再留言

12喜歡★e259305873 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:用Dev-C++寫簡單的...

追蹤私訊切換新版閱覽

作品資料夾

hyzgdivina喜歡虹咲的LLer
我的小屋裡有很多又香又甜的Hoenn繪師虹咲漫畫翻譯喔!歡迎LoveLiver來我的小屋裡坐坐~看更多我要大聲說昨天20:43


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】