文档章节

WM_COMMAND产生的条件

Amamatthew
 Amamatthew
发布于 2014/06/23 18:09
字数 329
阅读 9
收藏 0
1
#include<windows.h>
#include "allmenu.h"
#include<iostream>
using namespace std;
HMENU hmenu;
HMENU haddmenu;

//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
 switch(message){
/* case WM_INIT:
   hmenu=GetMenu(hwnd);//该函数取得分配给指定窗口的菜单的句柄。
   haddmenu=CreateMenu();

   AppendMenu(haddmenu,MF_ENABLED,IDM_OPENBIG,"打开目标图像");
   AppendMenu(haddmenu,HF_ENABLED,IDM_OPENSMALL,"打开模板图像");
   AppendMenu(haddmenu,HF_ENABLED,IDM_EXIT,"退出");

/* case WM_COMMAND:
  switch(LOWORD(wParam))
  {
   hmenu=GetMenu(hwnd);
   haddmenu=CreateMenu();

   AppendMenu(haddmenu,MF_ENABLED,IDM_OPENBIG,"打开目标图像");
   AppendMenu(haddmenu,HF_ENABLED,IDM_OPENSMALL,"打开模板图像");
   AppendMenu(haddmenu,HF_ENABLED,IDM_EXIT,"退出");
  }*/
 case WM_DESTROY:
  PostQuitMessage(0);
  break;
 default:
  return DefWindowProc(hwnd,message,wParam,lParam);
 }
 return 0;
}
//winmain函数
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
 MSG Msg;
 WNDCLASS wndclass;
 HWND hwnd;
 char lpszClassName[]="我的窗口";
 char lpszTitle[]="MyWindows";
 char lpszMenuName[]="menu";
 hmenu=LoadMenu(hInstance,"hmenu");

 wndclass.style=0;
 wndclass.lpfnWndProc=WndProc;
 wndclass.cbClsExtra=0; //窗口类无扩展
 wndclass.cbWndExtra=0; //窗口实例无扩展
 wndclass.hInstance=hInstance; //当前实例句柄
 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为默认值
 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

 wndclass.lpszMenuName=lpszMenuName;
 wndclass.lpszClassName=lpszClassName;

 if(!RegisterClass(&wndclass)){
  MessageBeep(0);
  return false;
 }
 //创建窗口
 hwnd=CreateWindow(
  lpszClassName,
  lpszTitle,
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  NULL,
  hmenu,
  hInstance,
  NULL
  );
 ShowWindow(hwnd,nCmdShow);
 UpdateWindow(hwnd);
 while(GetMessage(&Msg,NULL,0,0)){
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
 }

 return Msg.wParam;
}
//allmenu.h文件

#define MYMENU 10
#define IDM_OPENSMALL 11

#define IDM_OPENBIG 12
#define IDM_CLOSE 13
#define IDM_EXIT 14

© 著作权归作者所有

共有 人打赏支持
Amamatthew
粉丝 67
博文 1050
码字总数 76443
作品 0
厦门
后端工程师
Go语言Windows程序设计(4)--处理子窗体消息之按钮点击事件

前言 在上一篇中,我们给最基本的窗体添加了一个按钮,有了按钮后,当然就需要发挥按钮的作用,大家都知道按钮最基本的功能就是通过用户的点击事件与计算机产生交互。如果你做过.net 的winfo...

卧雪Sirk
2016/03/19
29
0
win32 sdk gui编程的一点经验

1、系统维持一个全局唯一的消息队列。 2、各个创建了window的线程,每个都有且只有一个消息队列,甭管它创建了多少窗口。有多少创建了window的线程,就有多少消息队列。相应就有多少消息循环...

小保哥
2013/12/31
0
2
windows编程的经验-----------------转载

转载自-------http://my.oschina.net/zhoubaojing/blog/189300 1、系统维持一个全局唯一的消息队列。 2、各个创建了window的线程,每个都有且只有一个消息队列,甭管它创建了多少窗口。有多少...

jinx88
2016/06/17
7
0
Windows的UI线程

在Windows应用程序中,窗体是由一种称为“UI线程(User Interface Thread)”的特殊类型的线程创建的。 首先,UI线程是一种“线程”,所以它具有一个线程应该具有的所有特征,比如有一个线程...

曾劲松
2016/07/25
90
0
WINDOWS消息机制(五):消息推送

在上篇中,介绍了消息网络的整体布局,这篇要介绍的是,消息进来之后,如何顺着整个消息网络,找到自己对应的处理函数。 MFC 消息分类 1 命令消息(WM_COMMAND) 比如菜单项的选择,工具栏按钮...

西昆仑
2012/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
3
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部