如何编程实现wince下“打开文件夹对话框”呢?这里就要涉及到下面要分析的知识了,对话框是一种特殊的窗口,它在wince 作为应用程序和程序使用者之间的交流窗口,通过显示和获取信息使人们的交流更加方便,这里先介绍下wParam和lParam,对于鼠标而言,LOWORD(wParam)和HIWORD(wParam)代表鼠标位置x,y坐标;对于菜单和控件而言,两者wParam的低字节都是各自的ID,即LOWORD(wParam)都是ID。两者的高字节对菜单而言是0,对控件而言是消息码(消息码也可能是0)所以不能单凭wParam参数来判断消息是来自于菜单还是来自于控件,但是可以通过lParam来判断,对于菜单而言lParam恒为0,而对于控件而言却是子窗口句柄。

  其结构和对话框类似,分为三种:

1.预定义对话框(由系统提供)

  InputBox()

  MsgBox()             //使用时要知道参数的含义

2.自定义对话框(定制对话框)

3.通用对话框(系统提供的Active X插件)  ----运行时不可见,通用对话框对象允许在程序中显示6种显示标准,如下:

*对话框消息处理

 对话框过程处理函数格式为:

 BOOL CALLBACK DialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

返回值是TURE和FALSE,是BOOL类型。在windows头文件里是int类型。

 窗口过程处理函数格式为:

 LRESULT CALLBACK ProcWinMain(   HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

返回值是LRESULT。

*创建对话框

下面介绍一种对话框产生的方法:(把对话框当作窗口来处理)

  RegisterClassEx函数把对话框模板注册为一个窗口类,然后创建一个由该窗口类派生的窗口。修改的地方是stdWndClass.cbWndExtra,原本都是NULL,现在改成DLGWINDOWEXTRA。如下

  stdWndClass.cbWndExtra = DLGWINDOWEXTRA;
stdWndClass.lpszClassName = ClassName;
stdWndClass.cbClsExtra = NULL;

这里要注意stdWndClass.lpszClassName对应的是窗口类的名字。这样才能把对话框当作是窗口进行处理。
改好之后照常调用函数RegisterClassEx注册窗口类
接着就是hDlg=CreateDialogParam(hInstance,DlgName,NULL,NULL,NULL);
非模态对话框对消息的处理都是要进过程序的消息队列的,也就是处理的时候都是要进过程序窗口过程的处理。

最后就是在消息循环里面的改进:(IsDialogMessage判断消息是否为对话框消息,用CreateDialogParam创建非模式对话框则需要)

 while(GetMessage(&stMsg,NULL,,))
{ if(!IsDialogMessage(hDlg,&stMsg))
{ TranslateMessage(&stMsg);
DispatchMessage(&stMsg); }
}  

 

  那么讲到最初的问题起点,如何编程实现wince下“打开文件夹对话框”呢?最后的代码如下:

 BROWSEINFO bi;
memset(&bi, , sizeof(BROWSEINFO) );
LPITEMIDLIST idl=SHBrowseForFolder(&bi);
if(idl==NULL) return;
SHGetPathFromIDList(idl,strFilePath.GetBuffer(MAX_PATH));

Wince 对话框程序设计的更多相关文章

  1. Windows程序设计:格式化对话框的设计

    刚开始学习Windows程序设计,磕磕碰碰,先做个小笔记缓缓神经,主要是将MessageBox这个Windows API函数的. MessageBox函数是许多人刚开始学习Windows程序设计或者是 ...

  2. 读书笔记——Windows环境下32位汇编语言程序设计(5)模态对话框

    资源可以用VC之类的生成,然后拷贝出来. 例如:每一个MFC工程都有一个resource.h,没有做任何修改时,这个resource.h文件是原来自带的.当对资源进行过修改添加之类的时,新添加的资源的 ...

  3. WINDOWS程序设计对话框加载显示bmp图像及刷新

    参考文章:http://blog.csdn.net/wangjian8006/article/details/7464431 图片的加载与显示也是属于窗口绘制这一部分的.所以其代码要写在消息函数的WM ...

  4. windows程序设计获取文本框(窗口、对话框)文本

    就是这样一个简单的界面,窗口上重绘的对话框(这种写法参考我之前博文): 需要做到的就是点击确定,获取文本框中内容. // 处理对话框消息 INT_PTR CALLBACK NewDlgProc(HWN ...

  5. 《Java程序设计》第16周周四:GUI编程及文件对话框的使用

    第一部分:实验项目  项目一:文件及选择 目的:了解文件对话框的用法,熟悉GUI中事件驱动的核心步骤. 1. 阅读博文 "JFileChooser (Java Swing提供的文件选择对话框 ...

  6. Java_Swing程序设计_尝试开发一个登陆窗体,包括用户名、密码以及提交按钮和重置按钮,当用户输入用户名my,密码love时,弹出登陆成功提示对话框。

    package com.lzw; import java.awt.*;import java.awt.event.*; import javax.swing.*; public class UseCa ...

  7. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  8. [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

    [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VS ...

  9. 《Javascript高级程序设计第3版》精华总结

    一.JavaScript简介   1.1 javascript简史 1.2 javascript实现 + javascript是一种专为网页交互而设计的一种脚本语言,javascript由三大部分组成 ...

随机推荐

  1. Jvm基础(1)-Java运行时数据区

    最近在看<深入理解Java虚拟机>,里面讲到了Java运行时数据区,这是Jvm基本知识,把读书笔记记录在此.这些知识属于常识,都能查到的,如果我有理解不对的地方,还请指出. 首先把图贴上来 ...

  2. 如何设置(修改)jetty(maven插件maven-jetty-plugi)的端口

    在使用jetty的maven插件,有两种方式来改变jetty server的端口,第一种方式较为简单,即: 通过命令行指定端口:mvn -Djetty.port=9999 jetty:run 另一种方 ...

  3. javascript中数组的迭代等操作

  4. CSS构造列表

    列表图片 背景列表 翻转列表 水平导航 内边距与外边距 Ul { List-style-type:none; Margin: 0; Padding: 0; } 使用图片作为列表图标 Ul { Marg ...

  5. C#学习笔记(十五):预处理指令

    C#和C/C++一样,也支持预处理指令,下面我们来看看C#中的预处理指令. #region 代码折叠功能,配合#endregion使用,如下: 点击后如下: 条件预处理 条件预处理可以根据给出的条件决 ...

  6. Http通讯协议在.net下的实现方法

    1.HttpwebRequest and  HttpWebResponse 2.客户端访问服务端的API:HttpClient 3. .net下的Remoting 4.Web Services 5.W ...

  7. 剑指OFFER之数值的整数次方(九度OJ1514)

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,表 ...

  8. 栈的应用2——超级计算器(中缀与后缀表达式)C语言

    输入中缀表达式输出结果(结果可以是小数,但输入必须是整数)  #include<stdio.h> #include<stdlib.h> //需要两个栈,一个储存结果,一个储存运 ...

  9. linux 查看当前路径命令:pwd

    查看当前路径命令:pwd pwd命令能够显示当前所处的路径. 这个命令比较简单,如果有时在操作过程中忘记了当前的路径,则可以通过此命令来查看路径,其执行方式为: # pwd /home/samlee ...

  10. Oracle DataGuard 物理Standby 搭建(下)

    主备库切换 Switchover 一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUAR ...