![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WINDOWS程序设计
qq_45992231
这个作者很懒,什么都没留下…
展开
-
进程实例句柄和GetModuleHandle函数
进程实例句柄加载到进程地址空间的每一个可执行文件或者DLL文件都被赋予了一个独一无二的实例句柄。可执行文件的实例被当做(w)WinMain函数的第一个参数hInstanceExe传入。HMODULE和HINSTANCE其实他们完全是一回事。如果某个函数的文档指出需要一个HMODULE参数,我们可以传入一个HINSTANCE,反之亦然。之所以有两种数据类型,是由于在16位Windows中,HMODULE和HINSTANCE表示不同类型的数据。GetModuleHandle为了知道一个可执行文件或DL转载 2021-08-18 17:13:25 · 301 阅读 · 0 评论 -
WINDOWS程序设计CHECK程序键盘实现鼠标光标的移动*
书上说,用键盘按键处理消息应该这样:按住方向键不动时,刚开始鼠标指针只是缓慢地移动,然后再加速移动。在KEYDOWN消息中,参数lParam指出了键盘按键消息是否是重复击键的结果。说下面这个程序出色地利用了这个消息 可是在WM_KEYDOWN消息中没有对lParam的处理,却也实现了这个功能,是操作系统自己实现的吗?#include <windows.h>#define DIVISIONS 5LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPA原创 2021-08-07 19:28:10 · 161 阅读 · 0 评论 -
WINDOWS程序设计为SYSTEM4程序添加鼠标滚轮响应
#pragma comment(lib, "winmm")#include<windows.h>#include<windowsx.h>#include<strsafe.h>#include"SYSMETS.h"LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR转载 2021-08-07 18:59:45 · 110 阅读 · 0 评论 -
WINDOWS程序设计Check3程序
#include <windows.h>#pragma comment(lib, "winmm")#define DIVISIONS 5LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);LRESULT CALLBACK ChildWndProc(HWND, UINT, WPARAM, LPARAM);TCHAR szChildClass[] = TEXT("Check3_child");int WINAPI WinMain(原创 2021-08-07 16:11:26 · 64 阅读 · 0 评论 -
WINDOWS程序设计CONNECT程序
#include <windows.h>#pragma comment(lib, "winmm")LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR szAppName[] = TEXT("Hello原创 2021-08-03 20:18:28 · 92 阅读 · 0 评论 -
WINDOWS程序设计KEYVIEW程序,SCROLLWINDOW发送WM_PAINT消息问题,WM_KEYDOWN和WM_CHAR发送WM_PAINT问题
书上的原来的程序是这样#include <windows.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR szAppName[] = TEXT("KeyView1"); HWND h原创 2021-08-02 21:27:55 · 229 阅读 · 0 评论 -
WINDOWS程序设计关于ScrollWindow的一点理解循环滚动 大区域与小区域绘制
首先是测试的代码#include <windows.h>#pragma comment(lib, "winmm")LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR szAppName[] = TE原创 2021-08-02 19:11:03 · 179 阅读 · 0 评论 -
WINDOWS程序设计对之前的滚动条程序添加键盘响应
这时候就明白了之前的位置要进行max和min的原因了,因为当滚动条位置在0的时候,我仍可以按下方向键向上按钮使得滚动条的位置继续减小,这时候滚动条的位置就是负的了,这显然是不行的case WM_KEYDOWN: switch (wParam) { case VK_UP: SendMessage(hwnd, WM_VSCROLL, SB_LINEUP, 0); break; case VK_DOWN: SendMessage(hwnd, WM_VSCROLL, SB_LINEDOWN,原创 2021-08-02 12:56:58 · 49 阅读 · 0 评论 -
WINDOWS程序设计CLOVER.c*
#include <windows.h>#pragma comment(lib, "winmm")#include<math.h>#define WINDOWX 200#define WINDOWY 200#define TWO_PI (2.0*3.14159)LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE h原创 2021-08-01 16:43:03 · 55 阅读 · 0 评论 -
WINDOWS程序设计映射模式和逻辑坐标与设备坐标的转化
映射模式可看作改变逻辑坐标的坐标系,改变坐标系的单位,方向等,也可通过SetWindowOrgEx函数改变坐标系原点的位置,注意当改变坐标系原点为100,100,并在110,110处输出相关信息的时候,实际上是和原点为0,0,在10,10处输出相关信息是一样的,也就是说客户区左上角的坐标变为100,100关于公式,xWindow-xWinOrg算出x坐标距离原点的范围,xViewExt/xWinExt算出WindowPort每个单位占多少个像素(ViewPort的单位是像素)比如xViewExt为20像素原创 2021-07-31 20:23:13 · 251 阅读 · 0 评论 -
WINDOWS程序设计ALTWIND.c
#include <windows.h>#pragma comment(lib, "winmm")LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hprevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR szAppName[] = TEXT("MyWindows");原创 2021-07-31 15:41:08 · 63 阅读 · 0 评论 -
WINDOWS程序设计填充模式ALTERNATIVE和WINDING*
可从两种角度理解1.平行线对于ALTERNATIVE模式,对于这个多边形画水平的扫描线,和扫描线相交的边依次标1,2,3,4,5……则1,2间,3,4间,5,6间的被填充,2,3间,4,5间的不被填充对于WINDING模式,水平线经过该区域的边界线,人为规定画线方向(一条线画完该多边形)初始化一个计数器为0,如果经过顺时针(或逆时针)方向的就加1,反之减1,如果最后结果非零,则填充,反之不填充(一个区域可以有多条水平线,若水平线经过的交点不一样?)2.射线对于ALTERNATIVE模式,从该区域原创 2021-07-31 15:19:04 · 119 阅读 · 0 评论 -
WINDOWS程序设计 BEZIER.C
#include <windows.h>#pragma comment(lib, "winmm")LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hprevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR szAppName[] = TEXT("MyWindows");原创 2021-07-30 17:20:50 · 46 阅读 · 0 评论 -
关于WINDOWS程序设计第五版 设备的尺寸中字体的大小的个人理解
书上说10磅是物理单位,因为写在纸上的时候10磅的字的大小就是那样的,它的高度是固定的,但是要在不同大小的电脑屏幕上显示10磅的字的时候就会遇到问题,屏幕小的10磅的字显示的就会小一点,屏幕大的10磅的字显示就会大一点,这个“大”和“小”是按照人的直观上来看的,实际上10磅的字在屏幕上所占的像素是相同的,是由于像素大小的不同导致人眼看上去大小是不同的。虽然直观上的大小不同,但是若打印在纸上,10磅的字就还是那个大小。所以要乘以每英寸的像素数来得到该字体所占的像素。至于书上所说的大字体和小字体,每英寸所占的像原创 2021-07-29 18:51:14 · 133 阅读 · 0 评论 -
WINDOWS程序设计SYSMETS3 滚动条能放在左侧吗?*
SYSMET.h#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))struct{int iIndex ;TCHAR * szLabel ;TCHAR * szDesc ;}sysmetrics [] ={SM_CXSCREEN, TEXT("SM_CXSCREEN"),TEXT("Screen width in pixels"),SM_CYSCREEN,TEXT("SM_CYSCREEN"),TE原创 2021-07-27 16:40:36 · 72 阅读 · 0 评论 -
WINDOWS程序设计SYSMETS2程序
SYSMETS.h#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))struct{int iIndex ;TCHAR * szLabel ;TCHAR * szDesc ;}sysmetrics [] ={SM_CXSCREEN, TEXT("SM_CXSCREEN"),TEXT("Screen width in pixels"),SM_CYSCREEN,TEXT("SM_CYSCREEN"),T原创 2021-07-27 13:14:14 · 79 阅读 · 0 评论 -
WINDOWS程序设计杂
UpdateWindow函数只是单纯的发送WM_PAINT消息并不会使区域无效Invalidate函数将区域无效之后发送WM_PAINT消息,但是其他消息处理好之后才能处理这条WM_PAINT消息,要立即处理需要UpdateWindow消息原创 2021-07-26 20:03:57 · 44 阅读 · 0 评论