百度首页 | 百度空间
 
查看文章
 
Win32创建窗口
2008年04月24日 星期四 22:57

#include <windows.h>
#include <stdio.h>
#include "stdlib.h"
#include "resource.h"
//char *a="计算机编程语言培训";

LRESULT CALLBACK WinSunProc(
        HWND hwnd,      // 窗口句柄
        UINT uMsg,      // 消息id
        WPARAM wParam, // 附加信息
        LPARAM lParam   // 附加信息
        );

int WINAPI WinMain(
       HINSTANCE hInstance,      // 应用程序实例
       HINSTANCE hPrevInstance, //
       LPSTR lpCmdLine,          // 命令行参数
       int nCmdShow              // 显示模式
       )
{
//定义窗口类
////////////////////////////////////////////////////////////////////////////////////////
WNDCLASS win;
win.style=CS_HREDRAW | CS_VREDRAW ;//类型窗口的样式 风格 水平重画和垂直重画
win.lpfnWndProc=WinSunProc;//窗口过程函数(回调函数)函数指针

win.cbClsExtra=0;   // 一般为0   附加内存空间
win.cbWndExtra=0;   // 一般为0   窗口附加内存
win.hbrBackground=(HBRUSH)GetStockObject(0);//背景画刷句柄
win.hCursor=LoadCursor(NULL,IDC_CROSS); //光标句柄
win.hIcon=LoadIcon(NULL,IDI_ERROR); //窗口类的图标句柄
win.hInstance=hInstance;            //包含窗口过程的实例句柄

win.lpszClassName="11";//窗口类名
//win.lpszMenuName=LoadMenu(NULL,IDR_MENU1) ;//菜单资源名
win.lpszMenuName=(LPCSTR)IDR_MENU1 ;
/////////////////////////////////////////////////////////////////////////////////////////////
//定义窗口类
RegisterClass(&win);//注册窗口类

HWND hwnd;
hwnd=CreateWindow("11","zhangyongfeng",WS_OVERLAPPEDWINDOW,
   100,100,600,400,NULL,NULL,hInstance,NULL); //创建窗口

ShowWindow(hwnd,SW_SHOWNORMAL);//显示窗口
UpdateWindow(hwnd);//更新窗口
//消息获取 循环函数
//////////////////////////////////////////////
/*
BOOL GetMessage(
LPMSG lpMsg,   //消息结构指针
HWND hWnd, //从哪个窗口获得消息 NULL接受任何窗口的消息
UINT wMsgFilterMin, //消息最小值 通常为0
UINT wMsgFilterMax //消息最大值 2个都是0 表示接受所有消息
);
*/
MSG msg;
while(GetMessage(&msg,NULL,0,0))//接受所有的消息
{
   TranslateMessage(&msg);//解析消息
   DispatchMessage(&msg); //派发消息
}

/////////////////////////////////////////////
return 0;
}

LRESULT CALLBACK WinSunProc(   //回掉函数
        HWND hwnd,      // handle to window
        UINT uMsg,      // message identifier
        WPARAM wParam, // first message parameter
        LPARAM lParam   // second message parameter
        )
{
int x,y;
long* pp= (long*) malloc( sizeof(100));
switch(uMsg)
{
//case WM_COMMAND:
// switch(wParam) {
// case :
//   ;
//   break;
//
// }
case WM_KEYDOWN:
   switch(wParam)
   {
   case VK_F1:
    MessageBox(hwnd,"F1 pressed","F1 pressed",MB_OK); break;
   case VK_F2:
    MessageBox(hwnd,"F2 pressed","F2 pressed",MB_OK); break;
    //在这里可以添加更多按键的处理过程
   case VK_ADD:
    MessageBox(hwnd,"F2 pressed","F2 pressed",MB_OK); break;

   }

   break;
case WM_CHAR: //接受按键消息
   SetTimer(hwnd,1,1000,0);
   char szChar[20];
   sprintf(szChar,"char is %c",wParam);
   MessageBox(hwnd,szChar,"窗口标题",MB_YESNO);
   break;
case WM_TIMER:
   pp= (long*) malloc( sizeof(100));
// MessageBox(hwnd,"鼠标右键","鼠标右键",MB_OK);
   //pp=fopen("C:\Documents and Settings\Administrator\桌面\zhy.txt","at+");
  
case WM_RBUTTONDOWN://接受鼠标右健消息

   //MessageBox(hwnd,"鼠标右键","鼠标右键",MB_OK);
   //break;
case WM_LBUTTONDOWN: //得到当鼠标左键按下时的鼠标位置
   /*x = LOWORD(lParam);
   y = HIWORD(lParam);
   char info[20];
   sprintf(info,"%d,%d",x,y);
   MessageBox(hwnd,info,"鼠标左键",MB_OK);*/
case WM_PAINT://接受绘制消息
   HDC hDC;
   PAINTSTRUCT ps;
   hDC=BeginPaint(hwnd,&ps);
   TextOut(hDC,100,100,"手好痛阿。。 !",strlen("手好通阿。。 !"));
   //LineTo(hDC,100,100);
   EndPaint(hwnd,&ps);
   break;


case WM_CLOSE://接受关闭消息
   if(IDYES==MessageBox(hwnd,"是否真的结束?","窗口标题",MB_YESNO))
   {
    DestroyWindow(hwnd);
   }
   break;
case WM_DESTROY://接受销毁窗口消息
   PostQuitMessage(0);

   break;

default:
   return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}

   Win32创建窗口实例下载


类别:c++ | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu