文档章节

WM_COMMAND产生的条件

Amamatthew
 Amamatthew
发布于 2014/06/23 18:09
字数 329
阅读 11
收藏 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
厦门
后端工程师
私信 提问
加载中
请先登录后再评论。
密码管理程序--pwgrep

为了管理我的密码,我写了一个小的 bash/awk 脚本用来管理一个密码数据库并使用 GnuPG 进行加密。使用 pwgrep 的好处是: 密码加密 密码版本化,不用担心丢失老密码 Since a versioning sys...

匿名
2013/03/11
1.3K
0
开源数据访问组件--Smark.Data

Smark.Data是基于Ado.net实现的数据访问组件,提供基于强类型的查询表达式进行灵活的数据查询,统计,修改和删除等操作;采用基于条件驱动的操作模式,使数据操作更简单轻松;内部通过标准SQL...

泥水佬
2013/03/12
2.5K
0
编程语言--Tcl/Tk

Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。 Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电...

匿名
2012/11/11
8.6K
0
用HTML+JS实现Android闹钟功能,附带Alarm代码分享

刚接触Android,研究了Rexsee的源码,分享这段Alarm的代码。先是开发手册中最终功能的实现函数,再是Alarm接口的源码。 参数: argu:型如“key1=value1;key2=value2;......”的参数表。首先...

DSALK
2011/11/21
1.2K
2
[译] WPF MVVM 循序渐进(从基础到高级)

本文翻译自Shivprasad koirala在CodeProject上的文章:[WPF MVVM step by step (Basics to Advance Level)][1] 简介 从我们还是儿童到学习成长为成年人, 生命一直都在演变。 对于软件架构, ...

不插电码农
2015/11/27
1.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

叮! Q币派送中,快来看看你中奖了吗?

中奖名单新鲜出炉啦! 大家好 为了感谢大家一直以来对我们公众号的关注和支持 D妹来给大家发!奖!品!了! 是哪几位幸运鹅 能把这30Q币收入囊中? 赶紧过来康康吧! 也欢迎各位后续多多分享...

腾讯云DNSPod
今天
24
0
Qt音视频开发5-vlc事件订阅

一、前言 事件订阅可以拿到文件长度、播放进度、播放状态改变等信息,vlc的事件订阅机制封装的比较友好,只需要先创建一个事件管理器,然后逐个订阅自己感兴趣的需要的事件,不感兴趣的可以不...

飞扬青云
30分钟前
18
0
酒精和药物影响下出现交通事故的频率

导读: 在酒精或药物影响下驾驶,已被认为是与发生潜在交通事故和出现严重伤亡结果相关的关键因素[1]。2016年,美国酒驾事故导致10,497人死亡,占当年交通事故死亡总人数的28%,其死亡总人数...

科研菌
昨天
0
0
高可用高并发的 9 种技术架构!

来源:androidchina http://www.androidchina.net/7928.html 1、分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一...

Java技术栈
31分钟前
23
0
联盟链要对区块链做减法

当前联盟链平台在公有链的基础上,对共识机制做调整,去掉公有属性,使得准入可控、效率提升,这实际上是对区块链在做减法。但这是否足够呢? 我们在应用中很快发现,联盟链的使用比较受限制...

FISCO-BCOS开源社区
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部