【C语言】【windows】【入门笔记】 第一课--主函数
erbi_lucifer吧
全部回复
仅看楼主
level 10
堕erbi 楼主

一楼度娘……[背扭]



2012年04月23日 03点04分 1
level 10
堕erbi 楼主

最近一直在忙C#项目,没时间接触C语言,于是没有做出新的东东,现在写一写新手入门贴吧……[Yeah]
2012年04月23日 03点04分 2
[真棒]
2014年11月10日 00点11分
嚓,两年前的
2014年11月10日 00点11分
level 10
堕erbi 楼主

新建项目详情见:https://tieba.baidu.com/p/1420705179
前三楼(只需前三楼),创建一个空白工程,然后添加CPP文件,当然你重命名为C文件也是可以的。
2012年04月23日 03点04分 3
level 10
堕erbi 楼主
附:程序的带参数运行----主函数的参数三的应用[抖胸]
可以在主函数一开始时判断参数三是否为空,不为空的话就进行带参数运行,你的程序不需要带参数运行的话(很多不需要,一般就是播放器,记事本这些需要),这一楼可以不用看,留着以后再说……[鲁拉]
//_tcscmp相当于strcmp,用于判断字符串是否相等。
if ( _tcscmp(szCmdLine, _T("")) != 0 )
{
//进入有带参数时的的处理,如记事本程序,在这里将文件名(也就是传入的参数szCmdLine)传入其它函数,如打开函数,将文件打开然后在程序上显示内容。这样双击txt文件弹出的记事本就有显示文件的内容了
}

2012年04月23日 04点04分 5
level 10
堕erbi 楼主
经典的MessageBox来了……[拍砖]
用于弹出对话框:
函数原型:
MessageBox (NULL, TEXT ("显示的内容……O(∩_∩)O哈哈~"), TEXT ("标题:光影"), MB_OK);

2012年04月23日 04点04分 6
level 10
堕erbi 楼主
好吧,先试试手,新建一个空白工程,加入CPP文件。[揉脸]
然后加入以下代码,编译运行,看看效果:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("显示的内容……O(∩_∩)O哈哈~"), TEXT ("标题:光影"), MB_OK);
return 0 ;
}

2012年04月23日 04点04分 7
level 10
堕erbi 楼主

编译环境是VS2010。
程序的编译生成运行参照:https://tieba.baidu.com/p/1433311298 (9楼以后……)
[我爱牛奶]

2012年04月23日 04点04分 8
level 10
堕erbi 楼主

[Kiss]开始看看这个函数了……这个函数在以后很常用,一般最多用于调试程序,弹个窗口看看其它函数的返回值是什么?有没有错,等等……
MessageBox (NULL, TEXT ("显示的内容……O(∩_∩)O哈哈~"), TEXT ("标题:光影"), MB_OK);
第一个参数通常是窗口句柄,是用于指定当弹出对话框时,哪个窗口不能使用,一般为NULL(就是没有指定……)
第二个参数是在消息框主体中显示的内容……
第三个参数是标题……
第四个参数是按钮……下面会讲到……

2012年04月23日 04点04分 9
level 10
堕erbi 楼主

001.按钮的定义
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
可以自己选择一种来作为MessageBox的参数。如MB_OK是【确定】,MB_OKCANCEL是【确定】+【取消】,MB_YESNO是【是】+【否】,…………
可以自己都试试。O(∩_∩)O!
我们可以在下面选择一个图标加入,中间用‘|’隔开。
[我抽]
002.图标:
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
注:
001:以下两边是同等效果的,一般用左边的,因为比较容易理解,直接英语翻译就知道是什么图标(如第一个是“警告-WARNING”,第二个是“错误-ERROR”)
MB_ICONWARNING MB_ICONEXCLAMATION
MB_ICONERROR MB_ICONHAND
MB_ICONINFORMATION MB_ICONASTERISK
MB_ICONSTOP MB_ICONHAND

2012年04月23日 04点04分 10
level 10
堕erbi 楼主

例子:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("显示的内容……O(∩_∩)O哈哈~"), TEXT ("标题:光影"), MB_OK|MB_ICONHAND);
return 0 ;
}
效果:
以下这几句是理论,看不懂就跳过吧……[瀑布汗~]
原因:那个‘|’是取或的意思,将按钮与图标后面的常数进行相或
如用的“MB_OKCANCEL |MB_ICONHAND”就是“0x00000001L”和“0x00000010L”相或
得到“0x00000011L”得到两个的综合,于是按钮和图标一起显示出来了;
当然,
MB_OK|MB_ICONHAND=0x00000000L|0x00000010L=0x00000010L= MB_ICONHAND
也就是说MB_OK|MB_ICONHAND和MB_ICONHAND的效果是一样的……这时MB_OK有时可以省略……

2012年04月23日 04点04分 11
level 10
堕erbi 楼主

MessageBox也是有返回值的啦……你可以定义一个int型数来接收返回值……
返回值可以是IDOK(它的值是1),IDYES、IDNO、IDCANCEL、IDABORT、 IDRETRY或IDIGNORE。
根据不同按钮有不同返回值……VS2010里你可以在代码上输入: IDOK 然后右击选择【转到定义】,就能转到它的定义,这时你可以看看它的定义的上下几行,那些也是MessageBox的返回值……
[鲁拉]

2012年04月23日 04点04分 12
今天我用 vc++ 试了一下 为什么不行啊 提示错误。。
2013年04月12日 14点04分
提示什么错误?
2013年04月12日 15点04分
level 10
堕erbi 楼主

例子:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
int i;
i=MessageBox (NULL, TEXT ("显示的内容……O(∩_∩)O哈哈~"), TEXT ("标题:光影"), MB_OK|MB_ICONHAND);
if(i==IDOK)
MessageBox (NULL, TEXT ("先告一段落了~"), TEXT ("标题:光影"),MB_OK|MB_ICONHAND);
return 0 ;
}
点击“确定”,弹出第二个窗口……

2012年04月23日 04点04分 13
level 10
堕erbi 楼主

简单的第一节就先学这些吧……[Yeah],实践是真理,现在还在怀念刚接触时日日夜夜不停打代码的日子……[拍砖]
/*********************************************************************************************
    / \./ \/\_   I Hand You
  __{^\_ _}_  ) }/^\    A Rose...
 / /\_/^\._}_/ // /
( (__{(@)}\__}.//_/__A___A______A_______A______A____
 \__/{/(_)\_} )\\ \\---v----V-----V--Y----v---Y-----
  (  (__)_)_/ )\ \>
\__/   \__/\/\/ 光影:Erbi_lucifer吧
    \__,--' 时间:2012年4月23日12:44:28
/*********************************************************************************************

2012年04月23日 04点04分 14
挚爱楼主,我刚开始学API,希望楼主能多多指教,QQ429561934
2013年04月05日 08点04分
level 5
[88],顶楼主。。。话说现在刚刚接触Windows编程,一切都显得那么陌生,可无论如何是必须在本学期末码出一个2D游戏来的,不然我tm的不当陈旭媛了我~~

2012年09月30日 06点09分 15
[抛媚眼]louis……陈旭媛是谁来着?话说我有一个2D小游戏的源代码……
2012年10月01日 09点10分
[拍砖]我勒个去了……话说怎么那么顺口呢,原来是程序猿(陈旭媛)……
2012年10月01日 09点10分
level 8
顶一个
2012年11月01日 10点11分 16
level 8
lz
给我们自学windows的人带来了曙光
2012年11月01日 10点11分 17
level 12
恩。终于发现务实的入门知识了。那些课本讲的生硬又教条,根本没有真东西。最后连怎么创建真正的窗口程序都没有。
2012年11月27日 03点11分 18
level 1
支持 成功入门
2014年09月07日 14点09分 19
level 12
看到API就脑大…
2014年11月04日 13点11分 20
1