///////////////////////////////////////////////////////////////
// 04FirstWindow.cpp文件 #include <windows.h>
#include<stdio.h>
// 窗口函数的函数原形
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char szClassName[] = "MainWClass";
WNDCLASSEX wndclass; // 用描述主窗口的参数填充WNDCLASSEX结构
wndclass.cbSize = sizeof(wndclass); // 结构的大小
wndclass.style = CS_HREDRAW|CS_VREDRAW; // 指定如果大小改变就重画
wndclass.lpfnWndProc = MainWndProc; // 窗口函数指针
wndclass.cbClsExtra = ; // 没有额外的类内存
wndclass.cbWndExtra = ; // 没有额外的窗口内存
wndclass.hInstance = hInstance; // 实例句柄
wndclass.hIcon = ::LoadIcon(NULL,
IDI_APPLICATION); // 使用预定义图标
wndclass.hCursor = ::LoadCursor(NULL,
IDC_ARROW); // 使用预定义的光标
wndclass.hbrBackground = (HBRUSH)
::GetStockObject(WHITE_BRUSH); // 使用白色背景画刷
wndclass.lpszMenuName = NULL; // 不指定菜单
wndclass.lpszClassName = szClassName ; // 窗口类的名称
wndclass.hIconSm = NULL; // 没有类的小图标 // 注册这个窗口类
::RegisterClassEx(&wndclass); // 创建主窗口
HWND hwnd = ::CreateWindowEx(
, // dwExStyle,扩展样式
szClassName, // lpClassName,类名
"My first Window!", // lpWindowName,标题
WS_OVERLAPPEDWINDOW, // dwStyle,窗口风格
CW_USEDEFAULT, // X,初始 X 坐标
CW_USEDEFAULT, // Y,初始 Y 坐标
, // nWidth,宽度
, // nHeight,高度
NULL, // hWndParent,父窗口句柄
NULL, // hMenu,菜单句柄
hInstance, // hlnstance,程序实例句柄
NULL) ; // lpParam,用户数据 if(hwnd == NULL)
{
::MessageBox(NULL, "创建窗口出错!", "error", MB_OK);
return -;
} // 显示窗口,刷新窗口客户区
::ShowWindow(hwnd, nCmdShow);
::UpdateWindow(hwnd); // 从消息堆中取出消息
MSG msg;
while(::GetMessage(&msg, NULL, , ))
{
// 转化键盘消息
::TranslateMessage(&msg);
// 将消息发送到相应的窗口函数
::DispatchMessage(&msg);
} // 当GetMessage返回0时程序结束
return msg.wParam;
} LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char s[];
int rowwidth;
int ig = , ir = , ie = ;
char Test[] = "Yesterday,\nAll my troubles seemed so far away,\nNow it looks as though they're here to stay,\nOh, I believe in yesterday.\nSuddenly,\nI'm not half the man I used to be,\nThere's a shadow hanging over me,\nOh, yesterday came suddenly.\nWhy she\nHad to go I don't know, she wouldn't say.\nI said,\nSomething wrong, now I long for yesterday.\nYesterday,\nLove was such an easy game to play,\nNow I need a place to hide away,\nOh, I believe in yesterday.\nWhy she\nHad to go I don't know, she wouldn't say.\nI said,\nSomething wrong, now I long for yesterday.\nYesterday,\nLove was such an easy game to play,\nNow I need a place to hide away,\nOh, I believe in yesterday.";
char szT[]= "Yesterday,\n";
char szText[] = "最简单的窗口程序!";
int sum=;
switch (message)
{
case WM_PAINT: // 窗口客户区需要重画
{
HDC hdc;
PAINTSTRUCT ps; // 使无效的客户区变的有效,并取得设备环境句柄
hdc = ::BeginPaint (hwnd, &ps) ;
// 显示文字
::TextOut(hdc, , , szText, strlen(szText));
::EndPaint(hwnd, &ps);
return ;
}
case WM_CREATE: HDC hdc ;
HFONT hFont;
int arr[];
FILE * pFile;
SIZE sz;
fopen_s (&pFile,"file.txt","w+");
hdc = GetDC(hwnd);
hFont = CreateFont(-, ,,, FW_BOLD, false, false, false,
DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH,"Arial");
SelectObject(hdc, hFont);
//GetTextExtentPoint32(hdc,szT,strlen(szT),&sz);
//fprintf(pFile,"w=%ld,h=%ld\n",sz.cx,sz.cy);
GetCharWidth32(hdc,,,arr);
//for(int i=0;i<91;i++)
// fprintf(pFile,"%c-->%d\n",' '+i,arr[i]);
/* for(int i=0;(szT[i]!='\0')&&(szT[i]!='\n');i++)
{
fprintf(pFile,"%c--> %d\n",szT[i],arr[int(szT[i])-32]);
sum=sum+arr[int(szT[i])-32];
}*/
while(ie < )
{
//如果句子不是换行或者结尾,s数组保存每个句子 if ((Test[ig] != '\n') && (Test[ig] != ))
{
s[ir++] = Test[ig];
}
//如果是结尾
else
{
sum=;
s[ir] = ; //添加字符串结束符
for(int i=;s[i]!='\0';i++)
{
sum=sum+arr[int(s[i])-];
}
rowwidth = sum; //获得字符串宽度
fprintf(pFile,"%d\n",rowwidth);
for(int i = ; i < ir; i++)
{
if (s[i] != ' ')
{
ie++;
} }
ir = ;
}
ig++;
}
/*fprintf(pFile,"sum= %d",sum);*/
fclose(pFile);
return ;
case WM_DESTROY: // 正在销毁窗口 // 向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环
::PostQuitMessage() ;
return ;
} // 将我们不处理的消息交给系统做默认处理
return ::DefWindowProc(hwnd, message, wParam, lParam);
}

最新文章

  1. Android开发自学笔记(Android Studio)&mdash;4.5 ProgressBar及其子类
  2. 【C解毒】怎样写main()函数
  3. AX 与Citrix打印机问题
  4. Dell_r720服务器部署
  5. BZOJ 1568 Blue Mary开公司
  6. 14)Java中Assert
  7. sql语句将本地服务器中的数据插入到外网服务器中
  8. JavaScript技巧45招
  9. 核心运营报表无线端数据,pv,uv相关数据,从9月1号开始就没了,为什么?
  10. PHP IOS PUSH Demo
  11. Java进阶(十三)servlet监听器
  12. Django中的Form表单验证
  13. [C++ Primer Plus] 第10章、对象和类(一)程序清单——辨析三个const
  14. 详解Vue.js 技术
  15. 论文总结(negFIN: An efficient algorithm for fast mining frequent itemsets)
  16. IO流-基础
  17. 数据仓库3NF基础理论和实例
  18. Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测
  19. POJ 1149 - PIGS - [最大流构图]
  20. 当ORACLE归档日志满后如何正确删除归档日志

热门文章

  1. CodeForces - 710E Generate a String (dp)
  2. POJ 1284:Primitive Roots 求原根的数量
  3. bash: java: command not found
  4. ACwing算法基础课听课笔记(第一章,基础算法二)(差分)
  5. Java并发基础类AbstractQueuedSynchronizer的实现原理简介
  6. Java:面向对象的理解
  7. 牛客小白月赛18——Forsaken的三维数点
  8. php对象:__autoload()函数及单入口文件,__set(), __get(), get_class_methods(),get_class_vars()
  9. php里parent,::和self的分别
  10. POJ-1733 Parity game(带权并查集区间合并)