文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

解决各浏览器向url中传中问参数的问题

https://www.cnblogs.com/godtrue/p/4333262.html 后台的处理代码 public static String getUrlnewName( String oldName) {String newName = "";try {String agent = inv.get......

踏破铁鞋无觅处
20分钟前
1
0
微信支付携带证书请求

package utils.wechat; import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.KeyStore; import javax.net.ssl.SSLContext;......

猿神出窍
27分钟前
2
0
1093 - You can't specify target table 'xxx' for update in FROM clause, Time: 0.002000s

1093 - You can't specify target table 'xxx' for update in FROM clause, Time: 0.002000s 根据结果集在b_order_copy1 表中删除 DELETE FROM b_order_copy1 WHERE Id in ( SELECT Id FRO......

lwenhao
28分钟前
1
0
JavaScriptCore全面解析

本文由云+社区发表 作者:殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者 JavaScript越来越多地出现在我们客户端开发的视野中,从ReactNative到JSpatch,JavaScript与客户端相...

腾讯云加社区
32分钟前
1
0
Jmeter参数的AES加密使用

在Jmeter日常实践中,大家应该都遇到过接口传参需要加密的情况。以登陆为例,用户名和密码一般都需要进行加密传输,在服务端再进行解密,这样安全系数会更高,但在使用jmeter进行接口测试的时...

程序猿拿Q
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部