C/C++
书香水墨
积跬步,行千里。
展开
-
十 一、C语言创建桌面程序:单选按钮、复选框和分组框控件
一、创建按钮单选按钮和复选框都是一种特殊的按钮,窗口类名称都是button,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为BS_AUTORADIOBUTTON,复选框的样式为BS_AUTOCHECKBOX。例如://创建一个单选按钮CreateWindow( TEXT("button"), TEXT("单选按钮"), WS_CHILD | WS_VISIBLE | ...原创 2020-04-10 15:25:31 · 2349 阅读 · 0 评论 -
十、C语言创建桌面程序:背景颜色和文字颜色
一、设置控件背景颜色当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息。如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄,Windows 会使用该画刷来绘制控件背景(子窗口背景)。也就是说,改变 static 控件的背景颜色只有这一种方式,就是处理 WM_CTLCOLORSTATIC 消息。WM...原创 2020-04-10 15:24:49 · 1504 阅读 · 1 评论 -
九、C语言创建桌面程序:编辑框控件
一、编辑框控件的窗口类名是edit。除了子窗口常用的风格 WS_CHILD、WS_VISIBLE、WS_BORDER 外,edit 控件也有自己的风格,都是以ES开头。风格说明ES_AUTOHSCROLL当输入文字超出横向显示范围时自动滚动(一般必选)。ES_AUTOVSCROLL当输入文字超出纵向显示范围时自动滚动。ES_CENTER文本居中对齐。...原创 2020-04-10 15:23:51 · 1454 阅读 · 0 评论 -
八、C语言创建桌面程序:按钮控件
一、按钮控件按钮既是标准控件,也是子窗口,窗口类名是button。Button 控件样式以BS开头,常用的有:样式说明BS_LEFT文本居左。BS_RIGHT文本居右。BS_CENTER文本水平居中(默认为 BS_CENTER)。BS_BOTTOM文本位于按钮底部。BS_TOP文本位于按钮顶部。BS_VCENTER文本垂直居中...原创 2020-04-10 15:22:47 · 5610 阅读 · 5 评论 -
七、C语言创建桌面程序:CreateFont创建自己的字体
一、 CreateFont 函数创建字体使用 CreateFont 函数,它的原型是:HFONT CreateFont( int cHeight, //字体的逻辑高度 int cWidth, //字体的逻辑宽度 int cEscapement, //指定移位向量相对X轴的偏转角度 int cOrientation, //指定字符基线相对X轴的偏转角度...原创 2020-04-10 15:21:50 · 1502 阅读 · 0 评论 -
六、C语言创建桌面程序:Static控件(静态文本框控件)
一、创建文本控件使用 TextOut 和 DrawText 函数有时候会不方便,例如:文本不能自动换行,超出窗口范围会被隐藏;每次更改文本都要先擦除背景再重新输出,比较麻烦。实际开发中一般使用静态文本框控件来输出文本。静态文本框是Windows 的一种标准控件,可以用来在窗口上显示一段文本,并且文本容易受到控制。除了静态文本框,Windows的标准控件还有很多种,例如按钮、下拉菜...原创 2020-04-10 15:20:48 · 1639 阅读 · 0 评论 -
五、C语言创建桌面程序:画笔和画刷
一、画笔画刷的概念画笔和画刷都用来在画布上绘图。画布就是用来绘画的一块背景,可以有颜色也可以没有,也可以有图案(比如条纹、网格等);画布可以理解为我们平时作图时使用的纸。画笔用来画线,可以是封闭的也可以是开放的,比如直线、曲线、圆形、矩形等。画刷用来填充背景或者一块区域,一般带颜色或图案。比如画一个矩形,需要先找一块画布,然后用画笔画出矩形的轮廓(线条),再用画刷给矩形区域喷涂上颜色。...原创 2020-04-10 15:19:22 · 1926 阅读 · 1 评论 -
四、C语言创建桌面程序:绘制图形
一、绘制矩形1.1 绘制矩形:Rectangle 函数Rectangle 函数可以在窗口上绘制一个矩形,它的原型为:BOOL Rectangle( HDC hdc, //设备环境句柄 int nLeftRect, //矩形左上角x坐标 int nTopRect, //矩形左上角y坐标 int nRightRect, //矩形右下角x坐标 i...原创 2020-04-10 15:16:10 · 2146 阅读 · 0 评论 -
三、C语言创建桌面程序:文字的输出 TextOut 和 DrawText
一、BeginPaint 和 EndPaint 函数当发生 WM_PAINT事件时,应用程序开始绘图。绘图之前需要先调用 BeginPaint 函数通知 Windows,告诉它当前程序需要使用显示器,你安排一下吧。BeginPaint 函数执行完毕就返回设备环境句柄,接下来就可以使用 GDI函数绘图了。绘图结束后,也需要调用 EndPaint 函数通知Windows,告诉它绘图结束了,你可以...原创 2020-04-10 15:07:44 · 2435 阅读 · 0 评论 -
二、C语言创建桌面:Hello World!
一、示例#include <windows.h>/** * 处理窗口事件的函数 * @return */LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine...原创 2020-04-09 20:20:46 · 747 阅读 · 0 评论 -
一、C语言创建桌面程序: 第一个桌面程序
一、示例代码#include <windows.h>#include <tchar.h>static TCHAR szWindowClass[] = _T("win32app");static TCHAR szTitle[] = _T("Win32 Guided Tour Application");LRESULT CALLBACK WndProc(HWND,...原创 2020-03-25 23:23:35 · 3902 阅读 · 0 评论 -
C语言 获取文件大小
一、Linux上获取文件大小long long getFileSize(const char* path) { struct stat statbuf; stat(path. $statbuf); long long size = statbuf,st_size; return size;}二、windows上获取文件大小long long getFileSize(const c...原创 2019-12-04 16:30:15 · 665 阅读 · 0 评论 -
C 语言网络编程相关函数(Linux)
一、相关函数函数描述一、结构体2.1 in_addr/* Internet address. */typedef uint32_t in_addr_t;struct in_addr { in_addr_t s_addr; /* 32为 IPV4 地址*/ };2.1 sockaddr_in/* Structure describing an I...原创 2019-12-02 15:09:52 · 449 阅读 · 0 评论 -
C 语言守护进程
一、相关函数函数描述void syslog(int priority, const chat *message, …);位于:<syslog.h>;功能:记录系统日志。void openlog(const char *ident, int options, int facility);位于:<syslog.h>;功能:。void clo...原创 2019-11-14 10:10:41 · 671 阅读 · 0 评论 -
C语言 I/O复用
一、原创 2019-11-12 11:07:45 · 376 阅读 · 0 评论 -
C语言 信号
一、信号相关函数函数描述void (*signal(int signo, void (*func)(int)))(int);位于:<signal.h>;功能:给对应信号绑定对应的函数;返回:成功返回以前的信号处理配置,出错返回SIG_ERR。1int kill(pid_t pid, int signo);位于:<signal.h>;功能:将信...原创 2019-11-06 22:05:21 · 1885 阅读 · 0 评论 -
C语言 多线程编程(UNIX)
一、相关函数函数描述int pthread_equal(pthread_t tidl, pthread_t tid2);位于:<pthread.h>;功能:比较两个线程是否是同一个线程;返回:相等返回非0数值, 否则返回0。pthread_t pthread_self();位于:<pthread.h>;功能:获取调用线程的线程ID。in...原创 2019-11-06 22:04:38 · 521 阅读 · 0 评论 -
C语言 进程(UNIX环境)
一、相关函数函数描述pid_t getpid(void);位于:<unistd.h>;功能:获取调用进程的进程ID;返回:调用进程的进程ID。pid_t getppid(void);位于:<unistd.h>;功能:获取调用进程的父进程ID;返回:调用进程的父进程ID。uid_t getuid(void);位于:<unistd....原创 2019-11-06 22:03:04 · 313 阅读 · 0 评论 -
C语言 strlen与sizeof的区别
一、strlen1.1 函数原型strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)。其原型如下所示:size_t strlen(char const* str);1.2 示列char sArr[] = "ILOVEC";/*用strlen()求长度, 运行结果为 6(因为不包括结束字符 null)*/printf("sArr的...原创 2019-10-30 17:23:49 · 377 阅读 · 0 评论 -
C语言 设置Linux环境变量
一、相关函数函数描述char *getenv(const char *name);位于:<stdlib.h>;功能:搜索 name 所指向的环境字符串,并返回相关的值给字符串;返回:该函数返回一个以 null 结尾的字符串,该字符串为被请求环境变量的值。如果该环境变量不存在,则返回 NULL。int putenv(const char * string);...原创 2019-10-29 14:39:29 · 1701 阅读 · 1 评论 -
C语言 文件和目录
一、文件和目录相关函数函数描述int stat (const char *pathname, struct stat *huf)位于<sys/stat.h>头文件;返回值:成功返回0;若出错返回-1;int fstat (int fd, struct stat *buf)位于<sys/stat.h>头文件;返回值:成功返回0;若出错返回-1...原创 2019-10-29 11:58:00 · 791 阅读 · 0 评论 -
C 语言文件I/O相关函数
一、I/O相关函数函数描述int open (const char *path, int oflag, …)位于 <fcntl.h> 头文件可以打开或创建一个文件。参数1返回值:若成功,返回文件描述符;若出错,返回-1。int openat (int fd, const char *path, int oflag, …)位于 <fcntl.h>...原创 2019-10-29 11:57:16 · 430 阅读 · 0 评论 -
C语言 标准I/O库
一、标准I/O相关函数函数描述int fwide(FILE *fp, int mode);位于:<wchar.h>;功能:设置流的定向;返回:若流是宽定向的,返回正值;若流是字节定向的,返回负值;若流是未定向的,返回 0。void setbuf(FILE *fp, char *buf);位于:<stdio.h>;功能:更改缓冲类型。vo...原创 2019-10-29 11:56:17 · 334 阅读 · 0 评论 -
Linux下使用cmake编译代码
一、编写测试代码:创建mian.c文件输入以下代码#include <stdio.h>int main() { printf("Use cmake build project.\r\n"); return 0;}二、创建CMakeLists.txt文件编写如下内容cmake_minimum_required(VERSION 3.0)project(pwx ...原创 2019-10-14 15:02:54 · 578 阅读 · 0 评论 -
常用的输入、输出函数
1 常用的输入、输出函数1.1 输出函数int putchar(int) 输出指定字符int puts(char *str) 输出指定字符串int printf(const char *__restrict, ...) 格式化输出字符1.2 输入函数int getchar(void) 从标准输入获取一个字符char * gets (char *) 从标准输入获取字符串int...原创 2019-03-14 21:51:11 · 1030 阅读 · 0 评论 -
C 语言goto语法
1 gotogoto语句为无条件转向语句,可以使程序立即跳转到函数内部的任意一条可执行语句。1.1 示列 #include <stdio.h> int main() { goto show; printf("Hello World!\n"); show: printf("AAA\n"); printf("BBB\n"); }最终结...原创 2019-03-14 21:53:32 · 897 阅读 · 0 评论 -
C语言数组
1 数组C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。...原创 2019-03-14 22:03:37 · 523 阅读 · 0 评论 -
C语言字符串处理函数
字符串处理函数包含在<string.h>头文件里。void *memchr(const void *str, int c, size_t n)在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。int memcmp(const void *str1, const void *str2, size_t n)把 str1 和 str2...原创 2019-03-14 22:20:59 · 202 阅读 · 0 评论 -
C语言处理时间
时间处理需要导入<time.h>头文件。1 库变量变量描述size_t是无符号整数类型,它是 sizeof 关键字的结果。clock_t这是一个适合存储处理器时间的类型。time_t is这是一个适合存储日历时间类型。struct tm这是一个用来保存时间和日期的结构。2 tm结构体struct tm { int tm...原创 2019-03-14 22:42:41 · 1379 阅读 · 0 评论 -
C语言中的函数
1 函数1.1 内部函数内部函数是指用static修饰的函数,只能在当前文件中调用。static int min(){ }1.2 外部函数外部函数是指可以被其他源文件调用的函数,函数默认定义为外部函数。文件一#include <stdio.h>int show() { printf("Hello World!");}文件二#...原创 2019-03-14 22:48:26 · 438 阅读 · 0 评论 -
C语言指针
1 指针所谓指针,也就是内存的地址;所谓指针变量,也就是保存了内存地址的变量。2 地址与指针地址:地址就是内存区中对每个字符的编号由于通过地址能返回指定的内存单元,可以说地址“指向”改内存单元。地址可以形象地称为指针,意思是通过指针能找到内存单元。*是一个单目运算符,叫做指针运算符,作用是返回指定内存地址中的变量值& 是一个单目运算符,叫做地址运算符,作用...原创 2019-03-14 23:25:54 · 443 阅读 · 0 评论 -
C语言结构体
1 结构体C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。1.1 一般形式struct 结构体名 { 成员列表};1.2 在声明结构体时,同时定义变量struct 结构体名 { 成员列表}变量名列表;1.3 直接定义结构体类型变量struct{ 成员列表}变量名列表;...原创 2019-03-14 23:53:35 · 315 阅读 · 0 评论 -
C语言共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。union 共用体和结构体的区别在于:结构体定义了一个由多个数据成员组成的特殊类型,而公用体定义了一块为所有数据成员共享的内存。共用体也称为联合体,它使几种不同类型的变量存放到同一段内存单元中。所以共用体在同一...原创 2019-03-15 00:01:31 · 1506 阅读 · 0 评论 -
C语言枚举类型
利用关键字enum可以声明枚举类型,这也是一种数据类型。使用该类型可以定义枚举类型变量,一个枚举变量包含一组相关的标识符,其中每个标识符都对应一个整数值。1 定义枚举类型enum Colors(Red,Green,Blue); // 0开始enum Colors(Red=1,Green,Blue); // 1开始enum Colors(Red=1,Green,Blue) color; ...原创 2019-03-15 00:04:10 · 632 阅读 · 0 评论 -
C语言可变参数
有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。int func(int, ... ) { . . .} int main(){ func(2, 2, 3); func(3, 2, 3, 4);...原创 2019-03-16 12:18:21 · 414 阅读 · 0 评论 -
C语言预处理
C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。1 预处理器指令表指令含义...原创 2019-03-16 12:22:26 · 1179 阅读 · 0 评论 -
C语言位域
1 位域如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下:struct{ unsigned int widthValidated; unsigned int heightValidated;} status;这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1。在这种情况下,C 语言提供了一种更好的利用内存空间的方式。如果...原创 2019-03-16 12:24:45 · 229 阅读 · 0 评论 -
C语言文件处理(fopen函数)
1 打开文件您可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:FILE *fopen( const char * filename, const char * mode );在这里,filename 是字符串,用来命名文件,访问模式 mod...原创 2019-03-16 12:27:14 · 6018 阅读 · 0 评论 -
C语言命令行参数
C语言命令行参数执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应...原创 2019-03-16 12:28:27 · 2571 阅读 · 1 评论 -
C语言错误处理
1 错误处理C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 errno.h 头文件中找到各种各样的错误代码。所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪...原创 2019-03-16 12:31:26 · 2768 阅读 · 0 评论