导航:首页 > 编程语言 > win32界面编程

win32界面编程

发布时间:2022-06-21 16:30:54

⑴ Win32编程原理

所谓的Win32开发,就是在C语言的层面上,直接使用Win32
API开发Windows应用程序或者系统程序。虽说现在直接用Win32
API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的良好途径。所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。下面是进行直接的WIN32
SDK方式编程的基本思路或者说是一个框架:
一个Windows程序分为程序代码和UI(User
Interface
用户接口)资源两大部份,两部份最后以RC编译程序整合为一个完整的EXE文件。所谓UI资源是指功能菜单、对话框、程序图标、光标形状等等东西。这些UI资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在,如
.ico
.bmp
.cur等等。程序员必须在一个所谓的资源描述档(.rc
)中描述它们。RC编译器(
RC.EXE
)读取RC
文件的描述后将所有UI资源文件集中制作出一个.RES
文件,再与程序代码结合在一起,这才是一个完整的
Windows可执行文件。
与控制台程序相同的是,一个Win32程序也必须有一个程序入口点,但是在这儿它不再叫main(),而叫做WinMain(),当WINDOWS的SHELL检测到用户欲执行一个EXE程序,就会调用加载器把程序进行加载,然后调用C
startup
code,后者再调用WinMain(),程序的执行就开始了,WinMain()函数的原型为:
int
CALLBACK
WinMain(
HINSTANCE
hInstance,HINSTANCE
hPrevInstance,LPSTR
lpCmdLine,int
nCmdShow);
下面程序必须进行必要的初始化工作-产生窗口,第一步是注册一个窗口类:用API函数:RegisterClass(),而这个函数需要一个已经定义好的系统结构:WNDCLASS,这个结构里面定义了窗口的种种属性,需要自己定义,但是许多属性都有默认值。然后调用CreateWindow()函数来产生具有上述定义属性的已注册窗口,但是需要注意的是它只是生成窗口,但并不显示之,所以还需要调用一个函数ShowWindow()将它显示在屏幕上,做完这些初始化工作以后,系统将进入消息循环:
while
(GetMessage(&msg,
NULL,
0,
0)){
TranslateMessage(&msg);
DispatchMessage(&msg);}
当消息循环捕捉到消息以后将交由窗口函数WndProc()窗口函数进行相应的处理。这样,一个基于消息事件驱动的WIN32程序的雏形就建立了起来。

⑵ 会用win32控制台编程,能干什么

可以干很多事。把win32 api大全上的大部分函数玩一遍。然后网上看看别人的源码
如果实在想要gui界面的话,mfc或qt都有简单的拖放控件来设置界面,右击控件添加消息处理函数,稍微学下就会了。又或者c#做界面(这个更简单),把核心功能用c或c++做成dll给c#调用。

⑶ Win32是什么什么叫Win32编程

WIN32就是基于32位的windows平台
WIN32编程就是针对32位windows平台的编程开发

现在有了64位的windows系统,但是貌似还没见WIN64

⑷ 如何学习win32编程

win32编程可以用C来完成,主要是通过windows的API来工作.但是API上千个,想全部掌握很难,建议安装一个MSDN随时查看.书籍方面又Petzeld的Windows程序设计,上下两册,讲的比较全面,但是内容很多.

我个人意见,我觉得你现在学win32编程倒不如先学C++,这样以后既能做win32程序(过程很繁琐),也能做MFC程序(明朗的多),而且有了面向对象思想之后,也可以继而学习JAVA或C#,用C#做windows form程序那叫一个方便!

所以强烈建议你先学C++,估计你是对控制台那个黑屏厌烦的,但是进入windows后你会发现,它比DOS的还烦!

⑸ Win32编程

win32一般都是用API直接编程,资料很容易找的;用面向对象方式写随便装个环境IDE都能找到该类里都有什么函数,你最好还是找本书系统的理解下,比如win32API编程,或是JAVA或者.net

⑹ 什么是win32编程

就是在windows平台调用系统提供的一些函数和方法编程,
这是windows操作系统编程的基础,但是现在很少有单独的win32编程了,一般都是使用C# .net,或者MFC+ATL之类的封装好的环境来编程

⑺ 一个简单的win32窗口程序

HACCELhAccelTable;

hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_WIN32));

while(GetMessage(&msg,NULL,0,0))

{

if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

还要建立加速键表资源和相应项,指向菜单,或自定义的ID,

在wm_command或wm_syscommand中处理,和菜单类似

你可以建立默认的win32工程试试,或者是helloworld的win32工程,vs的几个版本应该差的不太多,里面应该含有例子

⑻ win32编程与windows图形编程有什么区别

Win32程序,主要是控制台 Exe等等的文件类型的程序,它是纯控制台的。比如DOS。
Windows图形编程,是通过按钮,鼠标空间等图形控件进行编程的,具有可视化的特点。现在大部分软件都是图形的,比如Windows本身。

⑼ win32界面编程,窗口分割条本质上也是窗口,它的ClassName是什么

窗口分割条只是一个广义上的窗口,实际他只是一个窗口的框架。且不能单独使用。要放在MAINFRAME里,类包叫CSplitterWnd。并且他的内部窗口位置也不能由他来控制,而是由其中CVIEW类来控制。

⑽ 如何在win界面使用c语言编程

调用window库窗口函数即可创建windows窗口。
必须使用windows的编译器,如VC,MS等等。
RegisterClassEx函数:
该函数注册在随后调用CreateWindow函数和CreateWindowEx函数中使用的窗口类。 RegisterClass函数己经由函数RegisterClassEx函数来代替,但是,如果不需要设置类的小目标则仍然可以使用RegisterClass函数。
CreateWindowEx函数:
该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同。关于创建窗口和其他参数的内容,请参看CreateWindow。具体仍可见微软的msdn。
消息处理函数WindowProc:
该函数是一个应用程序定义的函数。它处理发送给窗口的消息。WINDPROC类型定义了一个指向该回调函数的指针。WindowProc是用于应用程序定义函数的占位符。
函数原型:
LRESULT CALLBACK WindowProc (HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
参数:
hwnd:指向窗口的句柄。
uMsg:指定消息类型。
wParam:指定其余的、消息特定的信息。该参数的内容与UMsg参数值有关。
IParam:指定其余的、消息特定的信息。该参数的内容与uMsg参数值有关。
返回值:返回值就是消息处理结果,它与发送的消息有关。

一个简单的Window的代码如下:

#include <Windows.h>
#include <tchar.h>
LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
int WinMain(
__in HINSTANCE hInstance,
__in_opt HINSTANCE hPrevInstance,
__in LPSTR lpCmdLine,
__in int nShowCmd
)
{
TCHAR *szName = _T("myWindow");
WNDCLASSEX wc = {0};
HWND hWnd = NULL;
MSG Msg = {0};
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.cbSize = sizeof(WNDCLASSEX);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//通过函数来设置一个白色的背景,这里大家设置为NULL看看,会很有趣的
wc.hCursor = NULL;//不设置
wc.hIcon = NULL;//不设置
wc.hIconSm = NULL;//不设置
wc.hInstance = hInstance;//当前程序的句柄,hInstance是有系统给传递的
wc.lpfnWndProc = WinProc;//窗口处理过程的回调函数。
wc.lpszClassName = szName;//窗口类的名字。
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;
RegisterClassEx(&wc);//在系统中注册
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T("我的窗口我喜欢"),WS_OVERLAPPEDWINDOW,
200,100,600,400,NULL,NULL,hInstance,NULL);//创建窗口,窗口标题为"我的窗口我喜欢"
if(hWnd == NULL)
{
MessageBox(NULL,_T("There's an Error"),_T("Error Title"),MB_ICONEXCLAMATION|MB_OK);
return 0;
}
ShowWindow(hWnd,nShowCmd);//显示窗口
UpdateWindow(hWnd);
//下面是对消息的循环处理,大家先不必管这些,下节课我会细说的
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);//翻译消息
DispatchMessage(&Msg);//分派消息
}
return Msg.message;
}
//消息处理函数
LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
switch(Msg)//处理消息过程
{
case WM_DESTROY://响应鼠标单击关闭按钮事件
PostQuitMessage(0);//退出消息队列
return 0;//退出函数
}
return DefWindowProc(hWnd,Msg,wParam,lParam);
}

阅读全文

与win32界面编程相关的资料

热点内容
pdf加密一机一码 浏览:600
怎么把百度云资源压缩 浏览:456
不会数学英语如何编程 浏览:88
如何能知道网站服务器地址 浏览:648
程序员月薪5万难吗 浏览:138
如何评价程序员 浏览:803
云虚机和服务器的区别 浏览:403
广西柳州压缩机厂 浏览:639
arm开发编译器 浏览:833
51单片机的核心 浏览:746
看电视直播是哪个app 浏览:958
将c源程序编译成目标文件 浏览:787
再要你命3000pdf 浏览:558
ai软件解压软件怎么解压 浏览:520
文件夹怎样设置序列号 浏览:963
javascriptgzip压缩 浏览:248
易语言怎么取出文件夹 浏览:819
苹果xs手机加密app哪里设置 浏览:605
超声雾化器与压缩雾化器 浏览:643
模拟实现进程调度算法 浏览:388