導航:首頁 > 編程語言 > c窗體應用程序實例

c窗體應用程序實例

發布時間:2023-02-21 23:38:57

『壹』 如何用C語言做一個windows應用程序窗口界面

一樓答的抄MFC一般需要使用C++語言。
使用Win32可以簡單的使用C語言完成Windows應用程序窗口界面。
推薦你看看《Windows程序設計》這本書,我有電子版,如果需要給我發郵件。
[email protected]

『貳』 cwindows應用程序的唯一入口點是

熱門頻道

首頁

博客

研修院

VIP

APP

問答

下載

社區

推薦頻道

活動

招聘

專題

打開CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved

c++ 桌面應用程序
打開APP

使用C++代碼創建一個Windows桌面應用程序 轉載
2019-12-04 14:45:20

anmily0566

碼齡3年

關注
下面六星教育整理使用C++代碼創建一個Windows桌面應用程序,供大家學習參考。
WinMain函數

Windows應用程序的唯一程序入口。

函數原型

int WINAPI WinMain
{
HINSTANCE hInstancem
HINSTANCE hPreInstance,
LPSTR lpCmdLine,
int nCmdShow
}
WINAPI定義如下

#define WINAPI _stdcall

_stdcall是一個函數調用約定,除此之外,還有__cdecl,fastcall,thiscall,naked call等函數調用約定。

_stdcall調用約定又稱Pascal調用約定,也是Pascal語言的調用約定。它使用的方式為:

1 int __stdcall sum(int a,int b);
__stdcall:函數的多個參數由調用者按從右到左的順序壓入堆棧,被調用函數獲得參數的序列是從左到右的的;清理堆棧的工作由被調用函數負責。
在Visual C++中,常用宏WINAPI或CALLBACK來表示__stdcall調用約定。

更詳細的說明可以查看

https://docs.microsoft.com/en-us/cpp/cpp/stdcall?view=vs-2019

__cdecl(也可寫成_cdecl)調用約定又稱C調用約定,是C函數默認的調用約定,也是C++全局函數的默認調用約定,通常省略。


int sum(int a,int b);
int __cdecl sum(int a,int b);
__cdecl:函數的多個參數由調用者按從右向左的順序壓入堆棧,被調函數獲得參數的序列是從左到右的;清理堆棧的工作由調用者負責

更詳細的說明可以查看
https://docs.microsoft.com/en-us/cpp/cpp/cdecl?view=vs-2019

WinMain函數的各參數說明

hInstance

應用程序當前運行的實例的句柄,該句柄由Windows系統生成。

hPrevInstance

當前實例的前一個實例的句柄,在Win32環境下,該參數總是NULL,不再起作用

lpCmdLine

一個以空終止的字元串,代表傳遞給程序的命令行參數。

nCmdShow

指定窗口的顯示狀態

常用值如下

nCmdShow = 0;不顯示

nCmdShow = 1;正常顯示(默認)

nCmdShow = 2;最小化顯示

nCmdShow = 3;最大化顯示

使用代碼創建Windows程序的步驟

1、設計一個Windows類

2、在Windows系統中注冊Windows類

3、用該Windows類創建一個窗口

4、創建一個消息循環

5、創建一個窗口過程函數WndProc

一、設計Windows類

在創建一個窗口前,必須對窗口進行設計,指定窗口的屬性。系統已經定義了WNDCLASS結構用於描述待創建窗口的參數。

WNDCLASS聲明如下

typedef struct tagWNDCLASSA {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
} WNDCLASSA, *PWNDCLASSA, *NPWNDCLASSA, *LPWNDCLASSA;

下面介紹各參數

style

窗口樣式,可用值如下

CS_VREDRAW:垂直重繪,當窗口垂直方向上的高度發生變化時,將重新繪制整個窗口。如果沒有指定這一樣式,在垂直方向上調整窗口高度時,將不會重繪窗口。

CS_HREDRAW:水平重繪,當窗口水平方向上的寬度發生變化時,將重新繪制整個窗口。如果沒有指定這一樣式,在水平方向上調整窗口高度時,將不會重繪窗口。

CS_OWNDC:獨占設備描述表,為該類中的每個窗口分配一個單值的設備描述表。

CS_SAVEBITS:在一個窗口中保存用戶圖像,以便於在該窗口被遮住、移動時不必每次刷新屏幕。但是,這樣會佔用更多的內存,並且比人工進行同樣操作時要慢得多。

CS_DBLCLKS:使窗口可以檢測到滑鼠雙擊事件,當用戶在窗口中雙擊滑鼠時,向窗口過程發送滑鼠雙擊消息

CS_BYTEALLGNCLIENT:滑鼠用戶區域按位元組對齊顯示。

CS_BYTEALLGNWINDOW:滑鼠用戶窗口按位元組對齊顯示。

CS_PARENTDC:在父窗口中設定一個子窗口的剪切區,以便於子窗口能夠畫在父窗口中。

CS_NOCLOSE:系統菜單中沒有CLOSE菜單項,窗口沒有關閉按鈕。

lpfnWndProc

指向窗口過程函數的函數指針。窗口過程函數是一個回調函數,針對Windows的消息處理機制,窗口過程函數被調用的過程如下:

1、在設計窗口類的時候,將窗口過程函數的地址賦給lpfnWndProc成員變數

2、調用RegisterClass(&wndclass)注冊窗口類,系統就有了用戶編寫的窗口過程函數的地址

3、當應用程序接收到某一窗口的信息時,調用DispatchMessage(&msg)將消息回傳給系統。系統則利用先前注冊窗口類時得到的函數指針,調用窗口過程函數對消息進行處理

cbClsExtra

Windows系統為窗口類結構分配追加的額外位元組數。一般為0

cbWndExtra

Windows系統為窗口實例分配或追加的額外位元組數,一般為0。如果應用程序使用資源文件里的CLASS指令創建對話框,並用WNDCLASS結構注冊對話框框時,cbWndExtra必須設置成DLGWINDOWEXTRA

hInstance

包含窗口過程程序的實例句柄。一般直接賦WinMain()的hInstance即可

hIcon

窗口類的圖標資源。這個成員變數必須是一個圖標資源的句柄。可以使用LoadIcon()函數載入圖標,如果hIcon為NULL,窗口將使用系統提供的默認圖標

hCursor

窗口類的游標句柄。這個成員變數必須是一個游標資源的句柄。可以使用LoadCursor()函數載入游標。如果hCursor為NULL,應用程序必須在滑鼠進入應用程序窗口時,明確設置游標的形狀

hbrBackground

窗口類的背景畫刷句柄。當窗口發生重繪時,系統使用這里指定的畫刷來填充窗口的背景。該成員可以指定為用於繪制背景的物理畫刷的句柄,也可以指定為標準的系統顏色值。如下:

BLACK_BRUSH 黑色

DKGRAY_BRUSH 深灰

GRAY_BRUSH 灰色

HOLLOW_BRUSH 空

LTGRAY_BRUSH 淺灰

NULL_BRUSH 等同於HOLLOW_BRUSH

WHITE_BRUSH 白色

BLACK_BRUSH 黑色

lpszMenuName

指向一個以空終止的字元串,該字元串描述菜單的資源名。若使用整數來標識菜單,需要用MAKEINTRESOURCE宏來進行轉換。如果lpszMenuName設置為NULL,那麼基於窗口類創建的窗口將沒有默認菜單

lpszClassName

指向一個以空終止的字元串,該字元串描述窗口類的名字。這個類名可以是由RegisterClass或者RegisterClassEx注冊的名字,或者是任何預定義的控制項類名

WNDCLASS使用實例如下

WNDCLASS wc;

二、注冊Windows類

Windows類設計完成時,需要調用RegisterClass()函數去注冊這個類,才可以創建該類型的窗口

ATOM RegisterClass(
const WNDCLASSA *lpWndClass
);
注冊代碼如下

if(!RegisterClass(&wc))
{
return 0;
}

三、創建窗口

使用CreateWindow函數創建窗口,如果函數調用成功,返回值為新窗口的句柄;如果調用失敗,返回值為NULL。可以使用GetLastError()函數獲取錯誤信息

HWND CreateWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HANDLE hInstance,
PVOID lpParam
);
《C/C++入門到精通企業級項目實戰http://ke.qq.com/course/349354》來自世界百強公司一線互聯網的大師執教,分享多年寶貴開發經驗,全程項目實戰貫穿,由淺入深通俗易懂。如果對C++感興趣的話,想學C++培訓的,可以搜索六星教育C++培訓,我們將竭誠為你解答。

原文鏈接:https://www..com
打開CSDN,閱讀體驗更佳

C++桌面應用開發(Qt學習)——QMainWindow(2)_尐鳴的博客_c++...
設置到窗口中 setStatusBar(statusBar); statusBar->addWidget(label);放左側信息 代碼如下: ··· //狀態欄 最多一個,在窗口最下側 QStatusBar *statusBar = new QStatusBar(this); //放入到窗口中 setStatusBar(statusBar); /...
C++桌面應用開發(Qt學習)——對話框(1)_尐鳴的博客_c++桌面應...
connect(ui->actionnew,&QAction::triggered,[=](){ // QDialog dlg2(this);// 該對象創建在棧中,執行完lambda就銷毀,對話框一閃而過 // dlg2.show(); //非模態 ​ QDialog *dlg2 = new QDialog(this);//該對象創...
C++桌面程序 掃雷教學
掃雷游戲製作 桌面程序 Windows桌面程序 C/C++都能學會 沒有類 想玩的寫可以下載到桌面遊玩
繼續訪問

使用 C++ 創建你的第一個 Metro 風格應用
WindowsMetro 風格應用專門針對 Windows 8 Consumer Preview 所提供的用戶體驗量身定製。每個出色的 Metro 風格應用都遵循特定的設計准則,這使得此類應用與傳統的桌面應用相比外觀更漂亮、反應更靈敏、行為更直觀。開始創建 Metro 風格應用之前,建議你先閱讀新模型的設計理論。你可以在設計 Metro 風格的應用中找到詳細信息。 在此,我們介紹了有助於你使
繼續訪問
如何創建一個最簡單的Windows桌面應用程序 (C++)_隨煜而安的博客-CSDN...
正如每個 C/C++控制台應用程序在起始點必須具有 main 函數,每個基於 Win32 的應用程序的函數也必須具有 WinMain 函數。WinMain就相當於是入口函數,並且具有固定的語法: intWINAPIWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR...
1.2編寫C++應用程序&1.3學習桌面應用程序的編程_xky1306102chenhong的博...
1.Visual C++可以開發的應用程序有兩大類:桌面應用程序和Windows Store 應用程序。 2.本書關注如何使用MFC(Microsoft Foundation Classes)和C++建立桌面應用程序。 3.windows桌面應用程序的應用程序編程介面稱為Win 32 ...
熱門推薦 如何創建一個最簡單的Windows桌面應用程序 (C++)
如何創建一個最簡單的Windows桌面應用程序 (C++) 最近剛開始學習C/C++開發Windows應用程序,這里將會以零基礎的視角把學習過程完全記錄下來。如果你也剛剛起步,那本文一定非常適合你。 進入正題,本文討論如何使用Visual Studio生成一個最簡單的C窗體應用程序,並向用戶顯示Hello~ 下面我們一步步來介紹,對於涉及代碼的地方,我們
繼續訪問
C語言開發windows桌面程序,演練:創建傳統的 Windows 桌面應用程序 (c + +)
演練:創建傳統的 Windows 桌面應用程序 (c + +)05/28/2020本文內容本演練演示如何在 Visual Studio 中創建傳統的 Windows 桌面應用程序。 要創建的示例應用程序使用 Windows API 顯示 "Hello,Windows desktop!" 應用程序。 可以將本演練中開發的代碼作為模式來創建其他 Windows 桌面應用程序。Windows API (...
繼續訪問

Qt-跨平台的C++圖形用戶界面應用程序框架(一)_十年編程老舅的博客-CSD...
經過這幾年的發展,Qt不但擁有了完備的C++圖形庫,而且也極大的提高了Qt開發跨平台應用程序的能力。 Qt可以同時支持桌面應用程序開發、嵌入式開發和移動開發,甚至它可以做移動開發,覆蓋了現有的所有主流平台。你只需要編寫一次代碼,發布到不...
c++桌面應用繪制圖片api_桌面版應用程序的前世今生_weixin_39797324的博...
桌面版應用程序歷史 桌面應用程序,又稱為GUI程序。可以分為以下幾個階段: VB, 上古程序員的開發工具,曾經全球第一的開發語言,拖拽式的圖形化開發讓它成為極佳的桌面開發工具。微軟依靠其操作系統的優勢,一直壓制同時期的競爭對手delphi。
C++桌面應用開發(Qt學習)——QMainWindow(1)
QMainWindow(1)
繼續訪問

c語言應用程序的開發步驟,C語言如何開發桌面GUI應用程序?
這里介紹一種非常簡單的方法,使用GTK,一個基於C語言開發的跨平台圖形工具包,可以直接使用C語言快速完成桌面GUI程序的開發,下面我簡單介紹一下實現過程,主要內容如下:1.首先,下載安裝GTK,這里有2種方法,一種是按照GTK官網的方法一步一步配置,還有一種是直接使用打包好的GTK-bundle包,這里以第二種方法為例,直接使用打包好的GTK-bundle包,這個可以直接在CSDN上找到下載,如下...
繼續訪問
C++桌面應用開發(Qt學習)--對象模型(對象樹)_尐鳴的博客_c++...
這種機制在GUI程序設計中相當有用,例如:一個按鈕有一個QShortcut(快捷鍵)對象作為其子對象,當我們刪除按鈕時,這個快捷鍵子對象理應被刪除。 QWidget是能夠在屏幕上顯示的一切組件的父類
C++使用代碼創建一個Windows桌面應用程序
WinMain函數 Windows應用程序的唯一程序入口。 函數原型 1 int WINAPI WinMain 2 { 3 HINSTANCE hInstancem 4 HINSTANCE hPreInstance, 5 LPSTR lpCmdLine, 6 int nCmdShow 7 } WINAPI定義如下 #de...
繼續訪問
C++桌面應用開發(Qt學習)--Qt簡介及第一個Qt程序
Qt簡介及第一個Qt程序
繼續訪問

求助 ! API版HelloWorld
//wnd2.cpp#include "wnd2.h" //頭文件//全局變數char szTitle[] = "Easy Hello Program"; //標題條字元串char szWindowClass[] = "W32"; //窗口類名char szMenuName[] = "NULL"; //菜單名/*********************
繼續訪問
C/C++程序怎麼生成的
一個C/C++程序的生要經以下步驟: 1.編寫文本代碼,生成C或cpp文件,這時候它還是文本形式(人工編輯的代碼形式) 2.編譯,就是compile,由C編譯程序對你寫的代碼進行詞法和句法分析,發現並報告錯誤,有錯時編譯不能通過。如若無錯,則生成中間代碼,擴展名為obj,此時它便是二進制的了; 3.連接,在匯編里稱link,在C里叫生成,即build,它的作用是生成可執行的exe文件。由於一個程序的源碼可由多個文件組成。這些文件在第二步中分別編譯,生成各自的目標文件(*.obj),這一步的作用便是將這些o
繼續訪問
創建一個 C++ 控制台應用程序項目
創建一個 C++ 控制台應用程序項目1. 先決條件2. 創建您的應用程序項目 C++ 程序員的通常起點是在命令行上運行的"Hello, world!"應用程序。這就是您將在此步驟中在 Visual Studio 中創建的內容。 1. 先決條件 在計算機上安裝並運行帶有 C++ 工作負載的 Visual Studio。如果尚未安裝,請參閱在 Visual Studio 中安裝 C++ 支持。 2. 創建您的應用程序項目 Visual Studio 使用 projects 來組織應用程序的代碼,並使用 solu
繼續訪問

創建第一個C++應用程序
創建第一個C++應用程序 創建第一個C++應用程序 創建第一個C++應用程序
VS2017C++windows桌面應用程序項目OpenCV及Boost庫測試
這里是一個VS2017的windows桌面應用程序項目,項目已經配置了64位的OpenCV4.0庫和64位的Boost庫,其中OpenCV庫和Boost庫都安裝在D盤里,大家可以在項目的附加庫目錄和包含目錄里查看安裝位置,以便大家順利編譯,另外想要了解怎麼配置的可以查看本人博客。
C++ 實現的一個小型的桌面管理程序
C++ 實現的一個小型的桌面管理程序。 這是一個小工具,可以添加程序的快捷方式, MFC VS2008
最新發布 1.1編寫一個簡單的C++程序

繼續訪問
【Visual Studio】Visual Studio 2019 創建 Windows 控制台程序 ( 安裝 『使用 C++ 的桌面開發『 組件 | 創建並運行 Windows 控制台程序 )
一、安裝 C++ 桌面開發組件、 二、創建並運行 Windows 控制台程序
繼續訪問

C/C++教程 第九章 —— windows編程入門
本章為該系列教程的第九章,主要講解Windows編程中一個窗口的最基礎實現
繼續訪問

小白學習C++的第四步:了解C++程序由編寫到執行的過程
1
繼續訪問

使用WTL進行Windows桌面應用開發-第一部
<ol> <li> 基於Windows平台的ATL/WTL桌面應用程序開發. </li> <li> 使用C/C++作為開發語言, 開發Windows本地桌面程序. </li> <li> WTL界面庫是MFC的替代選擇, 是Win32界面編程的薄封裝,可以說學會WTL開發即學會了Win32界面開發。 </li> <li> 適合中小型公司開發基於C/C++語言的客戶端項目, 因為WTL可以進行快速開發,不需要其他語言. </li> <li> 由淺入深介紹WTL桌面開發涉及到的原理和技術, 從簡單界面到自定義界面,自定義按鈕表格都有介紹。 </li> <li> 在繪制窗口元素如文本,圖形介紹了GDI和GDI+的常用的開發技巧。 </li> <li> 介紹了項目開發中遇到的一些細節問題. </li> <li> WTL配置少, 只有頭文件,不需要編譯為庫, 性能高,不依賴第三方庫,文件小, 運行快,調試方便, 升級方便。 </li> </ol>
繼續訪問

c++ 桌面應用程序
寫評論

評論

7

點贊



分享

『叄』 用C語言編寫設計一個Windows應用程序窗口界面。

您好!

小弟建議您用 Visual C# 2008 軟體
這不是問題,這是標准模塊

屬於秒殺問題 根本不需要任何演演算法(內建)!

『肆』 如何用C語言編寫一個窗體應用程序

最好不要,稍微麻煩一點的窗體程序你就搞不定,而且資料非常少
比較合算的應該是C#的WPF, VC的MFC,都不是C語言的

『伍』 求C# 窗體應用程序 範例

新建一個window窗體程序的工程,然後往窗體里拖一個按鈕button控制項,雙擊它,並添加代碼:
MessageBox.Show("hello world!");
然後運行,就是個簡單的窗體應用程序了
VS2008下代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace winfrom示例
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("hello world!");
}
}
}

閱讀全文

與c窗體應用程序實例相關的資料

熱點內容
dxf編程如何修刀 瀏覽:344
js音頻控制 瀏覽:112
蘋果6p微信發送語音會自己中斷 瀏覽:644
win10拷貝文件到u盤速度慢 瀏覽:396
怎麼把ps源文件字體改清楚 瀏覽:440
u盤如何恢復win10系統下載 瀏覽:153
完美世界100級升級攻略 瀏覽:67
安卓手機去除廣告軟體 瀏覽:529
水果禮品卡網站有哪些 瀏覽:272
愛譜數據線纜多少錢 瀏覽:165
word轉換成圖片格式 瀏覽:182
移動數據收費標準是多少 瀏覽:952
me525微信451去升級版 瀏覽:152
如何把壓縮文件變成永久文件 瀏覽:828
數據分片最大值多少 瀏覽:598
會玩app開完小號如何找回大號 瀏覽:939
html顯示flash代碼 瀏覽:651
while語句java 瀏覽:376
iphone鉻黃ps 瀏覽:529
linux掛載到已有分區 瀏覽:327

友情鏈接