C語言+win32api寫窗體應(yīng)用程序
昨晚看了一下win32api編程的知識,我在網(wǎng)上搜索了許多教程,一個(gè)美化版的windows編程,代碼錯(cuò)漏百出,缺字,翻譯難懂生硬,術(shù)語不專業(yè),一個(gè)windows.c編程,模糊,而且用的是VC++6.0,由于我的電腦裝不上vc++6.0,只能用vs2008,許多操作和函數(shù)都不太一樣了。在網(wǎng)上找到一篇博客園的win32api編程的文章,照抄下來,結(jié)果編譯下來幾十個(gè)錯(cuò)誤……暈死了。
后來還是參照以下四個(gè)步驟,自己查MSDN用C語言寫出來了,暈死,英文不好,話說,金山詞霸對MSDN的整句翻譯很專業(yè)啊。
步驟:
1、注冊窗口類;
2、創(chuàng)建窗體;
3、消息循環(huán);
4、編寫窗口消息處理函數(shù)。
代碼:
#include <windows.h>
#include<tchar.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR szCmdLine, int nCmdShow)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject();
wc.lpszMenuName = NULL;
wc.lpszClassName = _T("MyWindowClass");
if (!RegisterClass(&wc))
{
MessageBox (NULL, _T("無法注冊窗口類"), _T("錯(cuò)誤"), MB_OK);
return 0 ;
}
HWND newWindow = CreateWindow(
_T("MyWindowClass"),
_T("我的第一個(gè)winapi程序"),
WS_OVERLAPPEDWINDOW,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if (NULL == newWindow)
{
MessageBox (NULL, _T("無法創(chuàng)建窗體"), _T("錯(cuò)誤"), MB_OK);
return 0;
}
ShowWindow(newWindow, nCmdShow);
UpdateWindow(newWindow);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default :
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
就是一個(gè)只有標(biāo)題欄、關(guān)閉按鈕、最小化按鈕、最大化/還原按鈕、顯示區(qū)域的窗體。
用純C寫的,郁悶死了,好長啊,win32api超級多宏的,又愛又恨,煩死了
- java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤解決
- VC程序在Win32環(huán)境下動(dòng)態(tài)鏈接庫(DLL)編程原理
- 實(shí)例分析一個(gè)簡單的Win32程序
- WIN32程序獲取父進(jìn)程ID的方法
- 木馬程序Trojan-Spy.Win32.Agent.cfu清除方法
- 終于明白了tc編譯的dos程序和vc編譯的win32控制臺程序的區(qū)別
- tc編譯的dos程序和vc編譯的win32控制臺程序的異同
- Win32 程序在啟動(dòng)時(shí)如何激活前一個(gè)啟動(dòng)程序的窗口
相關(guān)文章
C語言中函數(shù)棧幀的創(chuàng)建和銷毀的深層分析
在C語言中,每一個(gè)正在運(yùn)行的函數(shù)都有一個(gè)棧幀與其對應(yīng),棧幀中存儲的是該函數(shù)的返回地址和局部變量。從邏輯上講,棧幀就是一個(gè)函數(shù)執(zhí)行的環(huán)境:函數(shù)參數(shù)、函數(shù)的局部變量、函數(shù)執(zhí)行完后返回到哪里等等2022-04-04
C++定時(shí)器Timer在項(xiàng)目中的使用方法
這篇文章主要給大家介紹了關(guān)于C++定時(shí)器Timer在項(xiàng)目中的基本使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
C++面試基礎(chǔ)之static關(guān)鍵字詳解
這篇文章主要給大家介紹了關(guān)于C++面試基礎(chǔ)之static關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
C語言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出
這篇文章主要介紹了C語言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出,C語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一條語句編寫完成經(jīng)過編譯后產(chǎn)生若干條機(jī)器指2022-07-07
基于C++實(shí)現(xiàn)俄羅斯方塊游戲的示例代碼
俄羅斯方塊(Tetris)是一款風(fēng)靡全球的經(jīng)典益智游戲,自1984年首次發(fā)布以來,便吸引了無數(shù)玩家,在這篇博文中,我們將深入探討如何用 C++ 編寫一個(gè)簡單的俄羅斯方塊游戲,我們將從游戲的基本概念和設(shè)計(jì)入手,逐步實(shí)現(xiàn)游戲的各個(gè)功能模塊,感興趣小伙伴快來看看吧2024-11-11
C++編程異常處理中try和throw以及catch語句的用法
這篇文章主要介紹了C++編程異常處理中try和throw以及catch語句的用法,包括對Catch塊的計(jì)算方式的介紹,需要的朋友可以參考下2016-01-01

